共用原型
Fater.prototype.lastname="Deng";
function Father(){
}
function Son(){
}
function inherit(Target,Origin){
Target.prototype = Origin.prototype;
}
inherit(Son,Fater);
Son.prototype.sex = "male";
var son = new Son();//(定义要在函数运行后)
var father = new Father();
son和father共用一个原型,但这样只要进行其中任意一个原型的改变,另一个也会随之改变。
圣杯模式
function inherit(Target,Origin){
function F(){
}
F.prototype = Origin.prototype;
Target.prototype = new F();
}
Father.prototype.lastname="Deng";
function Father(){
}
function Son(){
}
inherit(Son,Father);
Son.prototype.sex = "male";
Father.prototype
var son = new Son();
var father = new Father();
利用原型链,重新构造一个空的中间函数,让它的原型与father链接,再让它本身赋值给son
对象枚举
for in
var obj={
name:'13',
age:123,
height:169
}
//var prop
for (var prop in obj){
console.log(prop+" "+typeof(prop));
//console.log(obj[prop]);(不加引号)
}
有多少属性就循环多少次。
hasOwnProperty
var obj={
name:'13',
age:123,
height:169,
_proto:{
lastname:'ddd'
}
}
//var prop
for (var prop in obj){
if(obj.hasOwnProperty(prop)){
consoloe.log(obj[prop]);
}
}
hasOwnProperty作用是判断prop是否是obj里面的属性,若是原型中的则会被判断为false。
instanceof
A instanceof B 意思是:A对象 是不是 B构造函数构造出来的
看A对象的原型链上 有没有 B的原型
function Person(){
}
var person = new Person();
person instanceof Person;
结果就为ture;