对js对象和原型的理解

来源:互联网 发布:清洁面膜有必要吗 知乎 编辑:程序博客网 时间:2024/05/29 04:23

最近进行阶段性总结   又回到了js的对象和原型问题

更加深刻的理解了 js中的万物皆是对象的想法

所以首先你能想到的几种创建对象的方法?

var  obj1={ };

var obj2=new Object();


function Parent(){

this.name="liuting";

this.age="22";

this.lev="lev";

}

var x=new parent();

alert(x.name);       这个就是典型的使用构造函数的方式创建对象 

构造函数就是初始化一个实例对象 

构造函数需要注意的几个事项: 

默认函数首字母大写

构造函数并没有显示返回任何东西  new操作符会自动创建给定的类型并返回他们  当调用构造函数时  new回自动创建this对象   且类型就是构造函数的类型

------------------------------------------------------------------------

对比下两种创建对象的方法

function  Person(name){

      this.name=name;

}

var p1=new Person("john");  

------------------------------------------------------------------------

下面介绍原型和原型链

每一个javascript对象都和另一个对象相关联 这个“另一个对象”就是我们熟悉的原型  每一个对象都是从原型继承属性

1:所有通过对象直接量创建的对象都具有同一个原型对象,并且可以通过js代码Object.prototype获得对原型对象的引用

2:通过关键字new和构造函数调用创建的对象的原型就是构造函数的prototype属性的值

因此,var arr=new Array();通过这个创建的对象的原型就是Array.prototype

通过  var  date=new Date();原型就是Date.prototype

看之前的例子:

function  Person(name){

      this.name=name;

}

var p1=new Person("john");  

p1对象的原型就是Person.prototype      (对象可以从原型继承属性  所有给原型添加什么方法啥的   对象就可以继承了)


下面说继承------

javascript对象具有“自有属性”,也有一些属性是从原型对象继承而来的 ?但是这种继承是按照什么规律的呢?

假设要查询对象o的属性x 如果o中不错在x属性 那么将会继续在o的原型对象中查询

如果原型对象中也没有o 但是这个原型对象也有原型 那么继续在这个原型对象的原型上执行查询  知道找到x属性 或者查找到一个原型是null的对象为止   可以看到  对象的原型属性构成了一个链 通过这个链 可以实现属性的继承







原创粉丝点击