kuke_kuke通过本文主要向大家介绍了javascript,constructo,对象等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
作用一:分辨原型对象到底属于哪个构造函数
function isInstance(Func,obj){
return obj.constructor === Func;
}
console.log(isInstance(fn5,obj5));
作用二:可以从一个实例对象新建另一个实例对象
function fn6(){
}
var x = new fn6();
var y = new x.constructor();
系统提供一个方法来判断实例对象是否为该构造函数构造(准确解释为是否在同一原型链上)—-instanceof
console.log(y instanceof fn6);
console.log(isInstance(fn6,y));
作用三:在实例方法中,可以通过constructor调用自身的构造函数
fn6.prototype.createCopy = function(){ //在fn6.prototype中声明了createCopy方法
return new this.constructor();
}
var obj6 = new fn6(); //this.constructor指向fn6
console.log(obj6.constructor === fn6); //true
console.log(obj6.createCopy().__proto__ === fn6.prototype); //true
作用四:继承
function Father(){
this.sex = '雄性';
}
function Son(){
this.age = '1';
Son.superclass.constructor.call(this);
// p.constructor.call(this);
// Father.call(this);
}
// var p = new Father();
Son.superclass = new Father();
var you = new Son();
console.log(you.age); //1
console.log(you.sex); //雄性
由于constructor属性是一种对象与构造函数的关联关系
所以我们在修改原型对象的时候,务必小心
易错示例:
function A(){
}
var a = new A();
console.log(a instanceof A) //true
function B(){
}
A.prototype = B.prototype;
console.log(a.constructor === B); //false
console.log(a.constructor === A); //true
console.log(a instanceof A); //false 结果失真
console.log(a instanceof B); //false 结果失真
此篇主要介绍了constructor作用,如想详细了解javascript原型链,请参考:http://blog.csdn.net/qq_33599109/article/details/78020488