美文网首页
《JavaScript权威指南》笔记四

《JavaScript权威指南》笔记四

作者: margery | 来源:发表于2018-10-30 11:31 被阅读3次

    6 对象

    6.1 创建对象

    6.1.1 对象直接量

    var point = { x:1,y:2};

    6.1.2 new

    var o = new Object();

    6.1.3 原型

    每一个js对象(除了null)都和另一个对象相关联
    直接量创建的对象通过:Object.prototype 获取对原型的引用。

    new创建的对象的原型和构造函数.prototype。如:new Array(),原型为Array.prototype。但同时也继承自Object.prototype。(原型链)

    var a = {};
    var b = new Object();
    Object.prototype.name = function(){
    console.log('my name is a');
    };
    a.name(); // my name is a
    b.name(); // my name is a
    

    6.1.4 object.create()

    Object.create(args1, [args2]) 的原型:args1。args2可选

    6.2 属性的查询和设置

    object.property
    object["property"] 方括号呃逆必须是一个计算结果为字符串的表达式。
    继承
    var u = {r:1};
    var c = inherit(u);c继承属性r
    c.x = 1;c.y = 2;
    c.r = 3; c覆盖继承来的属性
    console.log(c.r);//1 原型对象没有修改

    6.3 删除属性

    delete 删除对象的属性。只是断开属性和宿主对象的联系,不会操作属性中的属性

    6.4 检测属性

    in 、
    hasOwnPreperty()、检测给定的名字是否是对象的自有属性。
    propertyIsEnumerable() 只有对象的自有属性且可枚举
    !== 判断一个属性是否是undefined,区分null和undefinend.

    6.5 枚举属性

    for/in可以在循环体中遍历对象中所有可枚举的属性(自有和继承属性),把属性名赋值给循环变量。
    对象继承内部属性不可枚举,添加的属性可枚举。
    ES5 两个枚举属性的方法
    Object.keys() //返回数组
    Object.getOwnPropertyNames() //返回数组,

    6.6 属性getter 和setter

    getter 和setter 属于存取器属性,不具有可写性
    数据属性只有一个简单的值

    var o = {
    //数据属性
    name: 'smy',
    sex: '女',
    //存取器属性
    set operationSex (_sex) {
    this.sex = _sex;
    },
    get operationSex () {
    return this.sex;
    }
    }
    console.log(o.sex);
    console.log(o.operationSex);
    o.operationSex = 'dhr';
    console.log(o.sex);
    

    6.7 属性的特性

    一个属性包含一个值和四个特性
    数据属性:值value, 可写性writable,可枚举 enumerable, 可配置configurable
    存取器属性:读取get, 写入set, 可枚举enumerable, 可配置configurale

    查看某个对象特定属性值
    Object.getOwnPropertyDescriptor(obj, attr);
    Object.getOwnPropertyDescriptor({x: 1,"x"}); //Object {value:1, writable: true, enumerable: true, configurable: true}
    修改一个属性
    Object.defineProperty(obj, attr, {})
    同时修改多个属性
    Object.defineProperties(obj, { attr1: {}, attr2: {} });

    6.8 对象的三个属性

    原型属性
    isPrototypeOf()检测一个对象是否是另一个对象的原型 与instanceof 相似
    类属性
    classof
    可扩展性
    Object.esExtensible(obj) //判断该对象是否可扩展
    Object.preventExtensions(obj) //转换为不可扩展 转换不可逆

    6.9 序列化

    JSON.stringify()、JSON.parse() 用来序列化和还原js对象。

    6.10 对象方法

    toString()

    toLocaleString()

    toJSON()

    valueOf()

    相关文章

      网友评论

          本文标题:《JavaScript权威指南》笔记四

          本文链接:https://www.haomeiwen.com/subject/xmtgtqtx.html