麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

Javascript的無new構建實例詳解

2019-11-20 10:03:20
字體:
來源:轉載
供稿:網友

看jquery源代碼第一步的時候,對于jquery對象的創(chuàng)建就看的云里霧里,琢磨半天終于有點感覺了,在此記錄下

第一種方式:

var A = function(){return A.prototype.init();}A.prototype = {init:function(){this.age = 50;console.log(this);return this;},age:100}console.log(A() === new A());

1.分析下結果為什么為true

A()內部調用的是A.prototype.init()函數

new A() 內部會調用構造函數,而它的構造函數就是function(){return A.prototype.init();},同樣調用的是A.prototype.init()函數

2.分析下A.prototype.init()函數返回什么

那就要看this了,判斷this指向誰,我們要在函數調用的時候分析,由于它是作為原型對象的屬性調用的,所以this就是原型對象A.prototype

這種創(chuàng)建方式,無論你調用多少次A(),他們其實都是返回的同一個對象,所以對b對象的修改會影響a對象,見下圖

var a = A();var b = A();console.log(a.age);console.log(b.age);b.age = 22;console.log(a.age);console.log(b.age);

那么如何解決這種問題呢,接下來就講下第二種方式,它也是jquery采用的方式

第二種方式

var A = function(){return new A.prototype.init();//①}A.prototype = {init:function(){this.age = 50;console.log(this);return this;},age:100}
 A.prototype.init.prototype = A.prototype;//②var a = new A();var b = new A();console.log(a===b);console.log(a.age);console.log(b.age);b.age = 22;console.log(a.age);console.log(b.age);

分析下①和②

①中new A.prototype.init()主要做了三件事

創(chuàng)建一個空對象var obj = {};

obj對象屬性_proto_指向函數A.prototype.init的prototype;

將A.prototype.init函數的this替換成obj對象,在調用A.prototype.init函數,A.prototype.init.call(obj),并返回新對象

因為①返回的對象的原型是A.prototype.init.prototype,它和A.prototype并沒什么關系,為了使新返回的對象可以繼承自A.prototype,所以②讓A.prototype.init.prototype指向A.prototype

所以方式二即創(chuàng)建了實例,又保證了各自的作用域獨立。

以上所述是小編給大家介紹的Javascript的無new構建實例詳解,希望對大家以上幫助,如果大家想了解更多資訊,敬請關注武林網網站!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久精品国产99国产精品亚洲 | 亚洲一区二区三区精品在线观看 | 国产精品片一区二区三区 | 亚洲成人激情av | 欧美精品国产综合久久 | 国产一区二区在线免费 | 成人在线观看免费视频 | 国产一级一片免费播放 | 国产亚洲精品久久久久久久久久 | 久久亚洲一区二区三区成人国产 | 秋霞a级毛片在线看 | 一区二区三区视频在线观看 | 久久噜噜噜| 久久久青青草 | 成人男女免费视频 | 国产午夜精品一区二区三区四区 | 最新在线中文字幕 | 欧美黄色一区 | 九色国产 | 特级无码毛片免费视频尤物 | 91精品国产一区二区三区四区在线 | 精品久久久久久久久久久aⅴ | av免费在线观看免费 | 久久久久久久.comav | 国产乱色精品成人免费视频 | av国产在线被下药迷网站 | 99爱国产精品 | 2017亚洲男人天堂 | 插插操| 视频一区二区三区在线观看 | 亚洲成人免费视频在线 | 成人毛片网站 | 久久αv| 操你逼 | 日本看片一区二区三区高清 | 黄视频免费在线观看 | 黄色片视频观看 | 欧美一级美片在线观看免费 | 亚洲福利在线观看视频 | 国产成人视屏 | av成人在线电影 |