国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Javascript 面試題隨筆

2019-11-20 23:53:02
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:

var Fundamental = {count:1};
function Test(){}
Test.prototype = Fundamental;
Test.prototype.increase = function(){this.count++;};
var test = new Test();
console.log(test.count);
var test2 = new Test();
console.log(test2.count);
test.increase();
//test.count和test2.count的值各是多少

前天去面試遇到的一道題,面試的問題大概是當test.increase被調用時,test和test2的count值分別是多少
首先,回答這道題有可能把這種情況與另一種類似的情況相混淆:
假如把代碼改成:
復制代碼 代碼如下:

function FundamentalModified(){
var count = 1;
this.increase = function(){
count++;
}
this.show = function(){
return count;
}
}
function TestModified(){}
TestModified.prototype = new FundamentalModified();
var test3 = new TestModified();
var test4 = new TestModified();
test3.increase();
//test3.show()和test4.show()各是多少

假如問題改成這樣,那就簡單的多了。但是兩個問題并不會得到相同的結果。
==========================================分割一下
回到面試題中,其實面試題的答案是2和1。原因呢:test.count是test的屬性,而且test2.count其實是test2.__proto__的屬性:

當test.increase()被調用時,JS執行了this.count++ ==> 返回this.count; this.count = this.count + 1;

this.count = this.count + 1;

這句在看似簡單的語句其實有著不同尋常的意味~~

這句話的意思其實是,給實例新建一個屬性,這個屬性被賦予this.count + 1的值。

this.count 其實是在原型鏈中的count,也就是這個this.count++其實在第一次執行的時候表現為:

this.count = Test.Prototype.count + 1;

可以用hasOwnProperty來驗證一下:

當var test = new Test()時。test.hasOwnProperty("count")  === false
test.increase()后。 test.hasOwnProperty("count")  === true
總的來說,JS還是一個很好玩的語言。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潞城市| 故城县| 深水埗区| 蒙山县| 宁强县| 中山市| 广西| 东乌珠穆沁旗| 虹口区| 安龙县| 渭南市| 伊吾县| 罗城| 万山特区| 安宁市| 舒城县| 静宁县| 云龙县| 确山县| 贵德县| 南江县| 交城县| 胶州市| 麟游县| 沙河市| 拜泉县| 嘉兴市| 乌鲁木齐县| 宁德市| 信丰县| 兴义市| 会昌县| 兴城市| 无极县| 曲沃县| 五指山市| 民勤县| 梁平县| 鲁甸县| 阳新县| 漯河市|