星空网 > 软件开发 > Java

JavaScript原型模式

一、提到原型模式,和构造函数关系密切,先讲一下它

    javascript没有类,通过函数来模拟实现类,用new来创建对象,函数内部的this指针来指向调用它的对象。

    事例中创建对象myGril,这个对象就获取了构造函数内this指向的所有属性和方法。

var GirlFriend=function (temperament) {    this.temperament=temperament;    this.loseTemper=function(){      return "When angry:"+this.temperament;    }  }var myGirl=new GirlFriend("温柔");console.log(myGirl.loseTemper()); //When angry:温柔


 

 

二、要是没有this的属性呢

通过new运算符创建的对象,只能访问this指向的属性和方法,实例中,myGirl只能访问temperament,lostTemper

temperament无法访问。

var GirlFriend=function (temperament) {    this.temperament=temperament;    this.loseTemper=function(){      return "When angry:"+this.temperament;    }    var temperament2=temperament;   }var myGirl=new GirlFriend("温柔");console.log(myGirl.temperament2);//undefined

 

三、讲了一大堆,和原型有什么关系呢?关键是构造函数内的方法,如果新建对象myGirl2 那么就会再创建一个lostTemper方法引用,对象建多了,对内存来说也是一种浪费,因为方法用的都是同一个,不像属性那样,每个对象都不同。这里就用到了原型对象,在构造函数的原型对象中添加一个这个方法,会使所有通过该构造函数创建的对象都具备该方法。

var GirlFriend=function (temperament) {    this.temperament=temperament;  }GirlFriend.prototype.loseTemper=function(){      return "When angry:"+this.temperament;  }
var myGirl=new GirlFriend("温柔"); console.log(myGirl.loseTemper());

 

 

四、刚才看到原型对象上添加一个方法,要是把该构造函数的原型对象改变引用位置,也就是指向一个新对象呢。

下例中两个方法同样都能访问,那我们什么时候可以用呢?一定要确认构造函数的原型对象的所有属性和方法在哪后才能这样做,因为这已经改变了指向,要是有原型对象的其他方法创建过,就失效了,所以很危险。

  var GirlFriend=function (temperament) {    this.temperament=temperament;  }

GirlFriend.prototype={ loseTemper:function(){ return "When angry:"+this.temperament; }, notLoseTemper:function(){ return "When not angry:"+this.temperament; } } var myGirl=new GirlFriend("温柔");
console.log(myGirl.loseTemper());//When angry:温柔
console.log(myGirl.notLoseTemper());//When not angry:温柔

 




原标题:JavaScript原型模式

关键词:JavaScript

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

Facebook只会投广告?原来还有这么多玩法!:https://www.kjdsnews.com/a/1444168.html
做亚马逊,你真的知道应收账款怎么对账吗?:https://www.kjdsnews.com/a/1444169.html
亚马逊新规,墨西哥卖家没有RFC税号不能发货。RFC税号注册需要提供什么资料。:https://www.kjdsnews.com/a/1444170.html
贴片广告救赎B站?:https://www.kjdsnews.com/a/1444171.html
卖家必看!中东VAT税号低成本注册攻略来了!:https://www.kjdsnews.com/a/1444172.html
货物入海外仓时忽略一件事,尾程一件代发成本飞涨:https://www.kjdsnews.com/a/1444173.html
深圳到西安自驾路线攻略 深圳到西安自驾最佳路线:https://www.vstour.cn/a/411228.html
松花蛋是哪里的特产松花蛋的产地:https://www.vstour.cn/a/411229.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流