使用隱藏的new來創(chuàng)建對象
更新時(shí)間:2011年03月29日 00:17:52 作者:
JQ中發(fā)現(xiàn)的,jQuery.Event類。估計(jì)作者是為了減少代碼量。定義一個(gè)類,但不用new關(guān)鍵字去創(chuàng)建該類對象,而使用方法調(diào)用()方式去創(chuàng)建該對象。
很多時(shí)候我們是這樣寫類,然后使用new創(chuàng)建對象的。
function Person(name,age){
this.name=name;
this.age=age;
}
Person.prototype={
setName : function(n){this.name=n;},
getName : function(){return this.name;}
}
var p = new Person('jack',25);
改成這樣的
function Person(name,age){
//條件改為(this==window)或(this==self)或(this.constructor!=Object)
if(!this.setName){
return new Person(name,age);
}
this.name=name;
this.age=age;
}
Person.prototype={
setName : function(n){this.name=n;},
getName : function(){return this.name;}
}
var p = Person('jack',25);
注意該類較最上面的寫類方式中多了以下
if(!this.setName){
return new Person(name,age);
}
好,創(chuàng)建類的實(shí)例(對象)方式也變成了如下
var p = Person('jack',25);
這種創(chuàng)建方式(函數(shù)調(diào)用)較上面的少了“new_”,new和空格,實(shí)際上是在類內(nèi)部new了。而這樣方式每次創(chuàng)建對象可以減少4個(gè)byte。
如果把類內(nèi)部的if判斷條件換成非prototype上的屬性,如this.name。程序會(huì)提示出錯(cuò):too much recursion
function Person(name,age){
if(!this.name){
return new Person(name,age);
}
this.name=name;
this.age=age;
}
Person.prototype={
setName : function(n){this.name=n;},
getName : function(){return this.name;}
}
var p = Person('jack',25);
復(fù)制代碼 代碼如下:
function Person(name,age){
this.name=name;
this.age=age;
}
Person.prototype={
setName : function(n){this.name=n;},
getName : function(){return this.name;}
}
var p = new Person('jack',25);
改成這樣的
復(fù)制代碼 代碼如下:
function Person(name,age){
//條件改為(this==window)或(this==self)或(this.constructor!=Object)
if(!this.setName){
return new Person(name,age);
}
this.name=name;
this.age=age;
}
Person.prototype={
setName : function(n){this.name=n;},
getName : function(){return this.name;}
}
var p = Person('jack',25);
注意該類較最上面的寫類方式中多了以下
復(fù)制代碼 代碼如下:
if(!this.setName){
return new Person(name,age);
}
好,創(chuàng)建類的實(shí)例(對象)方式也變成了如下
復(fù)制代碼 代碼如下:
var p = Person('jack',25);
這種創(chuàng)建方式(函數(shù)調(diào)用)較上面的少了“new_”,new和空格,實(shí)際上是在類內(nèi)部new了。而這樣方式每次創(chuàng)建對象可以減少4個(gè)byte。
如果把類內(nèi)部的if判斷條件換成非prototype上的屬性,如this.name。程序會(huì)提示出錯(cuò):too much recursion
復(fù)制代碼 代碼如下:
function Person(name,age){
if(!this.name){
return new Person(name,age);
}
this.name=name;
this.age=age;
}
Person.prototype={
setName : function(n){this.name=n;},
getName : function(){return this.name;}
}
var p = Person('jack',25);
您可能感興趣的文章:
- JS 創(chuàng)建對象(常見的幾種方法)
- JavaScript 三種創(chuàng)建對象的方法
- "automation服務(wù)器不能創(chuàng)建對象”的問題的解決方案總結(jié)大全
- 收集的比較全的automation服務(wù)器不能創(chuàng)建對象 異常原因和解決方法
- JavaScript 創(chuàng)建對象
- js中創(chuàng)建對象的幾種方式示例介紹
- js創(chuàng)建對象的幾種常用方式小結(jié)(推薦)
- C++用new創(chuàng)建對象和不用new創(chuàng)建對象的區(qū)別解析
- JavaScript創(chuàng)建對象的七種方式全面總結(jié)
相關(guān)文章
jQuery+css實(shí)現(xiàn)炫目的動(dòng)態(tài)塊漂移效果
這篇文章主要介紹了jQuery+css實(shí)現(xiàn)的動(dòng)態(tài)塊漂移效果,涉及jQuery基于隨機(jī)數(shù)與時(shí)間函數(shù)動(dòng)態(tài)操作頁面元素樣式的相關(guān)技巧,需要的朋友可以參考下2016-01-01
jquery實(shí)現(xiàn)對聯(lián)廣告的方法
這篇文章主要介紹了jquery實(shí)現(xiàn)對聯(lián)廣告的方法,以一個(gè)完整實(shí)例形式詳細(xì)分析了jQuery對聯(lián)廣告的樣式與功能實(shí)現(xiàn)方法,是非常實(shí)用的技巧,需要的朋友可以參考下2015-02-02
jQuery DataTables插件自定義Ajax分頁實(shí)例解析
這篇文章主要為大家詳細(xì)介紹了jQuery DataTables插件自定義Ajax分頁的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05
jQuery實(shí)現(xiàn)監(jiān)聽下拉框選中內(nèi)容發(fā)生改變操作示例
這篇文章主要介紹了jQuery實(shí)現(xiàn)監(jiān)聽下拉框選中內(nèi)容發(fā)生改變操作,結(jié)合實(shí)例形式分析了jQuery針對select選中觸發(fā)change事件相關(guān)操作技巧,需要的朋友可以參考下2018-07-07
jquery實(shí)現(xiàn)圖片平滑滾動(dòng)詳解
這篇文章主要為大家詳細(xì)介紹了jquery實(shí)現(xiàn)圖片平滑滾動(dòng)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03

