最近进行阶段性总结 又回到了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的对象为止 可以看到 对象的原型属性构成了一个链 通过这个链 可以实现属性的继承