资讯专栏INFORMATION COLUMN

JavaScrip学习之Object(上)

li21 / 2487人阅读

摘要:对象篇简介本身就是一个函数,可用于工具函数,也可以是用于构造对象的函数其次可以添加属性和方法方法又可以分为静态方法定义在自身上的和实例方法定义在原型上的工具函数作为工具函数参数可以是任意数据类型,将其转为对象如果参数是空,,则将其转换为空对

对象篇 Object简介

Object本身就是一个函数,可用于工具函数,也可以是用于构造对象的函数;其次Object可以添加属性和方法;方法又可以分为静态方法(定义在自身上的)和实例方法(定义在Object原型上的)

工具函数

作为工具函数:参数可以是任意数据类型,将其转为对象;如果参数是空,null,undefined,则将其转换为空对象;如果参数是原始值,则返回包装类对象;如果参数是对象则返回原对象;

利用这一特点可以构建一个判断参数是否为对象的函数

function isObject(target) {
    return target === Object(target);
}
作为构造函数

作为构造函数:生成一个对象,在下篇中着重介绍

var obj = new Object();  //{}
部分静态方法

Object的静态方法:

keys()与hasOwnPropertyNames(),其都是将对象的自身属性(不包含继承部分)以数组形式返回;其唯一的区别是:对于不可枚举的属性,keys不会输出,而hasOwnPropertyNames则会输出,例如数组又一个不可枚举的length属性

var arr = [1, 2, 3];
//var arr = new Object("123");  输出也是一样的
Object.keys(arr);                   //["1", "2", "3"]
Object.getOwnPropertyNames(arr);    //["1", "2", "3", "length"]

借keys方法可以输出对象属性的个数,Object.keys(obj).length

剩余方法中篇记录

部分实例方法

Object的实例方法:

Object.prototype.valueOf()
valueOf()返回对象的值,默认返回对象本身

var obj = {a : 1};
obj.valueOf() === obj;    //true

Object.prototype().toString()
toString()返回类型字符串,默认值为[object Object],第一个object为类型,第二个是构造函数Object,我们可以利用第二个构造函数来判断数据的类型

Object.prototype.toString.call([]);    //[object Array]
Object.prototype.toString.call({});    //[object Object]
Object.prototype.toString.call(123);   //[object Number]

改进成函数:

var type = function (target) {
        var str = Object.prototype.toString.call(target);
        return str.slice(8, -1);

};
["Null", "String", "Boolean", "Number", 
 "Undefined", "Object", "Function", "Array", "Window"
    , "RegExp", "Date"].forEach(function (elem) {
        type["is" + elem] = function (target) {
            return type(target) == elem; 
        }
});
type.isNumber(123);    //true
type.isObject({});     //true

Object.prototype.toLocaleString()与toString()结果一样,不同的是对于数组,日期,数字类型的的包装对象,返回地方化的字符串输出格式

Object.prototype.hasOwnProperty(),用于判断参数是否为对象的属性,返回一个布尔值

var obj = {a : 1};
obj.hasOwnProperty("a");   //true

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/98132.html

相关文章

  • JS习之JSON数据格式

    摘要:简析简介,是一种数据格式而不是编程语言,它和并没有从属关系,任何编程语言都可以使用语法规则分为三类简单值与语法相同,可以在中表示字符串,数值,布尔值和,但是其不支持数值字符串对象键值和键名都得用双引号数组解析和序列化目标对象,过滤器,字符串 JSON简析 1.简介 JSON,是一种数据格式而不是编程语言,它和JavaScrip并没有从属关系,任何编程语言都可以使用JSON; 2.语法...

    isaced 评论0 收藏0
  • jQuery源码习之extend

    摘要:源码学习之用于合并对象,可选择是否深复制。尽管官方文档明确指出第一个参数是的调用情况并不支持,但是这个版本的源码中,判断第一个参数的类型虽有限定是类型,但却未对其值真假加以限定。调用方式源码和指向同一个函数,在函数内部,对调用情况进行区分。 jQuery源码学习之extend $.extend用于合并对象,可选择是否深复制。使用时,第一个参数为合并后的对象。如果要进行深拷贝,则参数1为...

    quietin 评论0 收藏0
  • Javascript习之继承

    摘要:继承是面向对象编程语言中的一个重要的概念,继承可以使得子类具有父类的属性和方法或者重新定义追加属性和方法等。但是在中没有类的概念,是基于原型的语言,所以这就意味着对象可以直接从其他对象继承。 继承是面向对象编程语言中的一个重要的概念,继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。但是在Javascript中没有类的概念,是基于原型的语言,所以这就意味着对象可以直接...

    CHENGKANG 评论0 收藏0
  • vue源码习之简单的数据监听

    摘要:先实现一个简单的数据劫持。思路遍历对象的每个属性,为每个属性挂上监听函数即利用进行元编程考虑属性的子属性的监听先上代码你访问了你设置了新的其中涉及的知识点如果属性值还是对象,则递归继续 先实现一个简单的数据劫持。思路: 遍历对象的每个属性,为每个属性挂上监听函数(即利用Object.defineProperty进行元编程); 考虑属性的子属性的监听;先上代码: function ...

    zone 评论0 收藏0
  • JavaScript习之对象原型及继承

    摘要:原型要掌握这三者之间的关系,通过代码例子记录一下自身属性的这里就是通过代码看一下做了什么默认情况下,将的所有属性包括继承的赋值给有什么东西呢自己的原型链,添加一个属性,用来指明对象的谁构造的自身全部属性,这边构建一个空对象原型,所以没有自有 原型 要掌握这三者之间的关系prototype,constructor,__proto__通过代码例子记录一下 function F() { ...

    妤锋シ 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<