枯燥的js继承与对象枚举

共用原型

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;

猜你喜欢

转载自blog.csdn.net/weixin_51664705/article/details/113802191
今日推荐