深刻探究JavaScript对象系列(一)

       最近看了由大卫编写、淘宝前端团队翻译的《JavaScript权威指南》第六版,对于js的对象有了一个初步的认识,写这几篇文章的目的第一也是巩固下本身学习的东西,再者也但愿能整理下js对象的基本语法和用法当作砖头抛出去。javascript

 

一.JavaScript的总体概述

      对象是JavaScript的基本数据类型,能够把JavaScript对象当作是属性的无续集合(看有点像PHP中的关联数组),每一个属性都是一个键值对,除了字符串、数字、布尔值、null、undefined外,都是对象。前端

      在JavaScript中,对象能够分红3类:java

  •    内置对象:即由ECMAScript规范定义的对象或类,如数组、函数、日期和正则表达式等都是内置对象;
  •    宿主对象:由JavaScript解释器所嵌入的宿主环境,最多见的就是Web浏览器定义的对象;
  •    自定义对象:由JavaScript代码定义的对象。

 

二.JavaScript对象的建立

      建立对象的3种方法正则表达式

  1.   对象直接量:建立对象最简单的方式。
    var empty = {};   //建立了一个没有任何属性的对象
    var point = {x:0, y:0, add: function(s,t){ return s+t;} };   //建立了一个具备两个属性和一个方法的对象    
    
    var book = {          //建立了一个有属性值也为对象的对象
     "title" : "JavaScript权威指南",
     “author" : {
          firstname : "David",
          secondname : "Flanagan"   
      }  
    };
    

      

  2. 经过关键字new建立对象:经过new运算符和一个构造函数来新建一个对象。
    var o = new Object();   //建立一个空对象,和var o ={};同样
    var a = new Array();   //建立一个空数组,和 var a =[];同样
    

      

  3. Object.create()函数:ECMAScript5中定义了这个静态方法,其中第一个参数是要建立的对象的原型对象(prototype),第二个参数可选,用于对对象的属性进行进一步的描述。(以后会对原型作进一步说明)
    var o = Object.create({x : 1 , y : 2});  //o继承了属性x和属性y
    var o1 = Object.create(null);  //建立一个没有原型的新对象
    
    function inherit(p){     //因为ECMAScript3中没有该方法,所以可使用该方法来模拟
    	if(p == null) throw TypeError(); 
    	if(Object.create) return Object.create(p);  
    
    	var t = typeof p;
    	if(t !== "object" && t !== "function") throw TypeError();
    	function f(){};
    	f.prototype = p;  //指定构造函数f的原型为p
    	return new f();
    }
    

      

 

三.原型对象(prototype)和继承

       prototype是JavaScript继承的核心,全部的JavaScript对象都是经过原型对象来相互联系的。数组

       全部经过对象直接量建立的对象都具备同一个原型对象,并能够经过Object.prototype得到对新建立对象的引用;经过关键字new和构造函数调用建立的对象的原型就是构造函数的prototype属性的值。浏览器

       除了Object.prototype之外,其余全部对象都有原型,且原型对象都是普通对象,全部的JavaScript内置构造函数以及大部分自定义的构造函数都具备一个直接或间接继承自Object.prototype的原型,好比经过构造函数定义一个时间对象 var s = new Date(); 即s的原型对象就是Date.prototype,而Date.prototype又有本身的原型对象,即Object,prototype,这一系列连接的原型对象就是所谓“原型链”(prototype chain).函数

相关文章
相关标签/搜索