原型
在构造函数创建出来的时候,系统会默认帮构造函数创建一个原型对象。
原型的作用:
原型对象中的属性和方法可以被构造函数创建出来的对象访问。
如何访问构造函数的原型:
构造函数.prototyoe
属性(方法)的查找原则:
当访问对象的成员的时候,会在自身找有没有,如果有直接使用,
如果没有找到,则去当前对象的原型对象中找,如果找到了直接使用
如果没有找到,则去原型对象的原型对象中找,如果找到了直接使用
如果没有找到,继续向上查找,直到找到Object.prototype,如果没有属性则是undefined 方法则报错
通过对象访问原型:
_proto_属性(是一个非标准的属性,不推荐使用,主要用来做调试)
在使用新的对象替换掉默认的原型对象之后,原型对象中的constructor属性会变成Object,为了保证原型能正常访问,需要在原型上加一个constroctor 属性指向构造函数
原型继承:
(1)利用原型中的成员可以被其他相关的对象共享这一特性,可以实现继承,这种实现继承的方式叫原型继承。
//1,给原型对象中添加成员 对象继承了原型对象
function Person(name,age){
this.name=name;
this.age=age;
}
Person.prototype.sayHello=function(){
console.log("我是person的方法");
}
var p = new Person("张三",2);
p.sayHello();
(2)直接替换原型对象来继承 (很可能会将原有原型中的成员丢失)
function Person(name,age){
this.name=name;
this.age=age;
}
var Parent = {
sayHello:function (){
console.log("我是父类的方法");
}
}
Person.prototype= Parent;
var p = new Person("张三",2);
p.sayHello();
(3)利用混入的方式给原型对象添加成员
function Person(name,age){
this.name=name;
this.age=age;
}
var Parent = {
sayHello:function (){
console.log("我是父类的方法");
}
}
for(var k in Parent){
Person.ptototpe[k] =Parent[k]
}
var p = new Person("张三",2);
p.sayHello();
经典继承语法:
Object.create(obj)
Object.prototype 的成员:
1,constructor
原型对象的一个属性,指向该原型对象相关联的构造函数。
2,hasOwnProperty
用来判断对象本身是否拥有某个属性
3,propertyIsEnumerable
判断属性是否属于对象本身 ,判断属性是否可以被遍历。
4,toString 和 toLocaleString
都是转换成字符串,toLocaleString 是转化成本地的字符串,根据电脑的设置。
5,valueOf
获取当前对象的值
在对象参与运算的时候
1.默认的会先去调用对象的valueOf方法,
2.如果valueOf获取到的值,无法进行运算 ,就去去调用p的toString方法 最终做的就是字符串拼接的工作
6,__proto__
可以使用 对象.__proto__ 去访问原型对象
instanceof 关键字
语法 : 对象 instanceof 构造函数
判断该构造函数的原型是否在该对象的原型链上。

被折叠的 条评论
为什么被折叠?



