zoukankan      html  css  js  c++  java
  • javascript权威指南读书笔记(1)——对象

    1、创建对象有三种方式:

        (1)、对象直接量:var obj = {x:"pro1",y:"pro2"};
        (2)、new创建:var obj = new Object();    var obj2 = new Array();
        (3)、Object创建:有两个参数,第一个参数是这个对象的原型,第二个是可选参数,用于对属性进行进一步描述。
            var obj = Object.create({x:1,y:2});
     
    2、属性的查询:
        两种方式:
        (1)点号方式:var author = book.author;
            点号后面的标识符不能是保留字:如book.for是错误的,这时候要用第二种方式book["for"].
        (2)方括号方式:var author = book["author"];//方括号内要是字符串或者可以转化为字符串的值。
        当标识符未知时,就无法用点号方式表示,这时也只能用放括号。
        如:var addr = "";
            for (var i=0 ; i<4 ;i++){
                addr += customer["address" + i] ;
            }
     
    3、原型:
        每一个javascript对象(除null外)都和另一个对象相关联,另一个对象就是原型。
        (1)所有的通过对象直接量创建的对象的原型都是Object.prototype的值
        (2)所有通过关键字new和构造函数创建的对象的原型就是构造函数的prototype,例如:通过new Date()创建的对象的原型是Date.prototype,同时这个对象也继承自Object.prototype.
        (3)没有原型的对象为数不多,其中Object.prototype就是一个。
        示例:通过原型继承创建一个新对象:
       
    function inherit(p)
    
        {
    
            if(p==null)    throw TypeError();//p是一个对象,但不能是null
    
            if(Object.create){//如果Object.create()存在,直接使用它
    
                return Object.create(p);
    
            }
    
            var t = typeof p ;
    
            if(t !=="object" && t!=="function") throw TypeError();
    
            function f(){};//定义一个空构造函数
    
            f.prototype = p ;   //将其原型属性设置为p 
    
            return new f() ;    //使用f创建p的继承对象
    
        }
    4、属性访问错误
        查询一个对象的不存在的属性并不会报错,而是返回undefined;访问一个不存在的对象的属性时则会报错。
     
    5、删除属性:
        delete运算符可以删除对象的属性。如:delete book.author //book不再有author这个属性。
        不过delete运算符只能删除自有属性,不能删除继承来的属性。
     
    6、检测属性
        可以通过以下三种方式检测对象是否有某个属性:
        (1)in运算符: var o = {x:1}; "x" in o ;//true   "y" in o;//false
        (2)对象的hasOwnProperty()方法,对于自有属性,返回true;对于继承属性,返回fasle;
            var o = {x:1}; o.hasOwnProperty("x");//true
        (3)propertyIsEnumerable()是hasOwnProperty()的加强版,只有检测到是自有属性且属性是可枚举的时才返回true。
     
    7、枚举属性
        用for ....in 循环可以再循环体内遍历对象中所有可枚举的属性
     
    8、序列化对象
        对象序列化是指将对象的状态转化为字符串,也可以将字符串还原为对象。ECMAScript5提供了内置的JSON.stringify()和JSON.parse()用来序列化和还原JavaScript对象,这些方法都使用了JSON作为数据交换格式,JSON的全称是“javaScript Object Notation”.
     
    9、toString()方法
        默认的toString()方法并不会返回很多信息
        var s = {x:1,y:2}.toString();
        这行代码的计算结果为"[object object]".
        但是可以通过toString方法来获取一个对象的类型,不过有很多对象重写了toString方法,要得到一个对象的类型,可以做一下处理:
       
     function classOf( o )
    
        {
    
            if(o=== null) return "Null";
    
            if(o=== undefined) return "Undefined" ;
    
            return Object.prototype.toString().call(o).slice(8,-1);        
    
        }

        注:数组调用toString()方法,结果是一个数组元素列表;函数调用该方法,结果得到函数的源代码。

     
  • 相关阅读:
    streamsets 集成 cratedb 测试
    streamsets k8s 部署试用
    streamsets rest api 转换 graphql
    StreamSets sdc rpc 测试
    StreamSets 相关文章
    StreamSets 多线程 Pipelines
    StreamSets SDC RPC Pipelines说明
    StreamSets 管理 SDC Edge上的pipeline
    StreamSets 部署 Pipelines 到 SDC Edge
    StreamSets 设计Edge pipeline
  • 原文地址:https://www.cnblogs.com/peislin/p/2804573.html
Copyright © 2011-2022 走看看