最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用方法封裝javascript的new操作符(一)

 更新時間:2010年12月25日 23:01:33   作者:  
雖然js是基于對象的,但在很多時候會使用到new這個操作符。
先看個例子:
復制代碼 代碼如下:

var Class = {
create : function () {
return function () {
this.initialize.apply(this, arguments);
}
}
}
var A = Class.create();
A.prototype = {
initialize:function(){
//todo
}
test:"abc"
}
var a = new A();

這是很多jser構建類和實例化對象的過程, 細心的人會發(fā)現(xiàn): 實例化的a會多一個initialize方法。initialize在實例化時做為代理在實例化后就沒有存在的意義了,而且有時候會引起不必要的麻煩,比如 for…in 語句遍歷a時,會把initialize這個方法遍歷出來。
我首先想到的是用前面博文中寫的Class.js來做,這樣就非常干凈。但是在Class.js中的繼承機制有一些bug的,在不入侵(即:不修改原型、不生成額外屬性)的條件下,要實現(xiàn)接口更是難上加難了。于是我就想到封裝new操作符,這樣做的好處就是 可先修改原型,在封裝new的方法中,實現(xiàn)繼承、接口,并去除額外屬性。
我們首先給new操作符的簡單的實現(xiàn)一下:
復制代碼 代碼如下:

function New(){//new是關鍵字,所以要區(qū)別一下
var as = [],args = arguments;
for(var i=1;i<args.length;i++){
as.push('args['+i+']');
}
nobj = eval("new args[0]("+as.join(",")+");");
return nobj;
}
接下來測試一下:
function A(n){ this.name = n;}
var a1 = new A('ts');
alert(a1.name);//ts
var a2 = New(A,'tangoboy');
alert(a2.name);//tangoboy
測試成功,現(xiàn)在New方法基本可以代替new操作符實例化對象了。
然后 解決文章開始的initialize問題就非常簡單了:
function New(){
var as = [],args = arguments;
for(var i=1;i<args.length;i++){
as.push('args['+i+']');
}
nobj = eval("new args[0]("+as.join(",")+");");
delete nobj.initialize;//刪除實例化對象的方法
return nobj;
}

下一節(jié)開始豐富New方法。

相關文章

  • 原生js實現(xiàn)瀑布流布局

    原生js實現(xiàn)瀑布流布局

    這篇文章主要為大家詳細介紹了原生js實現(xiàn)瀑布流布局的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • JS也玩OO繼承

    JS也玩OO繼承

    JS也玩OO繼承...
    2007-01-01
  • 使用gulp搭建本地服務器并實現(xiàn)模擬ajax

    使用gulp搭建本地服務器并實現(xiàn)模擬ajax

    這篇文章主要給大家介紹了如何使用gulp搭建本地服務器并實現(xiàn)模擬ajax的相關資料,文中介紹的非常詳細,相信對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-04-04
  • 最全面的百度地圖JavaScript離線版開發(fā)

    最全面的百度地圖JavaScript離線版開發(fā)

    最全面的百度地圖JavaScript離線版開發(fā),這篇文章主要為大家詳細介紹了JavaScript離線版開發(fā)的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • JavaScript插件化開發(fā)教程(五)

    JavaScript插件化開發(fā)教程(五)

    這篇文章是JavaScript插件化開發(fā)系列教程的第五篇,還是著重于實戰(zhàn),通過具體的實例來學習jQuery的方式如何開發(fā)插件,有相同需求的小伙伴來參考下吧。
    2015-02-02
  • js 計數(shù)排序的實現(xiàn)示例(升級版)

    js 計數(shù)排序的實現(xiàn)示例(升級版)

    這篇文章主要介紹了js 計數(shù)排序的實現(xiàn)示例(升級版),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • js如何讀取csv內容拼接成json

    js如何讀取csv內容拼接成json

    這篇文章主要介紹了js如何讀取csv內容拼接成json,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 詳解JS如何實現(xiàn)文字溢出時用省略號...顯示

    詳解JS如何實現(xiàn)文字溢出時用省略號...顯示

    這篇文章主要為大家詳細介紹了JavaScript如何實現(xiàn)當文本內容過長時,中間顯示省略號...,兩端正常展示,有需要的小伙伴可以跟隨小編一起學習一下
    2024-02-02
  • JS產生隨機數(shù)的幾個用法詳解

    JS產生隨機數(shù)的幾個用法詳解

    下面小編就為大家?guī)硪黄狫S產生隨機數(shù)的幾個用法詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • 微信小程序實現(xiàn)文件預覽

    微信小程序實現(xiàn)文件預覽

    這篇文章主要為大家詳細介紹了微信小程序實現(xiàn)文件預覽,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10

最新評論

浦江县| 抚州市| 博罗县| 阜宁县| 增城市| 中山市| 华安县| 大厂| 海城市| 石家庄市| 定州市| 喀什市| 元江| 油尖旺区| 文成县| 峨眉山市| 惠安县| 湖南省| 溧阳市| 新密市| 韶山市| 江城| 额敏县| 寻甸| 敦煌市| 揭阳市| 墨竹工卡县| 会理县| 玉林市| 吴江市| 怀宁县| 察隅县| 晋宁县| 海丰县| 得荣县| 灵丘县| 阿坝县| 泸溪县| 政和县| 农安县| 凤台县|