函式與原型

2021-09-24 08:10:48 字數 2088 閱讀 8613

匿名函式自呼叫

for(var i = 0 ; i < 5 ; i++))(i),i*1000);

}複製**

答案:0,1,2,3,4

解析:

for(var i = 0 ; i < 5 ; i++))(i);

settimeout(fn,i*1000);

}fn匿名函式自呼叫立即執行,所以先列印0,1,2,3,4。然後 函式沒有返回值。所以

settimeout(undefined,i*1000); 分別0s,1s,2s,3s,4s列印undefined。

複製**

逗號表示式

var a = 10, b = 20;

function

commatest

()var c = commatest();

alert(a);

alert(b);

alert(c);

複製**

答案:11 21 10

解析: a++ 先賦值再自增。不管怎樣,最後的值都會加1.所以a為11,b為21。逗號表示式返回的都是最後乙個值。所以結果為10。

逗號表示式

var out = 25,

inner =

};console.log((inner.func, inner.func)());

console.log(inner.func());

console.log((inner.func)());

console.log((inner.func = inner.func)());

複製**

答案:25,20,20,25

解析: (inner.func, inner.func)() 是進行逗號運算子,逗號運算子就是運算前一段表示式,且返回後一段表示式的結果。匿名函式的自呼叫,this指向的window。所以第乙個this.out指向的全域性的out 為25。 第二個和第三個都是方法呼叫。所以out為20。最後乙個和第乙個相同。等號運算子,返回的是結果inner.func = inner.func。即20。

原型

function

supertype

()supertype.prototype.getsupervalue = function

()function

subtype

()subtype.prototype = new supertype(); //繼承

subtype.prototype.getsubvalue = function

() var instance = new subtype() //例項

console.log(instance.getsupervalue())

複製**

答案:true 解析:看圖 instance通過__proto__.__proto__訪問到getsupervalue();建構函式裡的this.property為true。所以為true。

函式呼叫

function foo(x) 

}var bar = foo(2);

bar(10);

複製**

答案:16

解析:

bar(10) => function (y) 

所以y為10,因為x為2。 (++tmp)最後結果都會自增1.所以為 10+2+4 = 16。

複製**

函式宣告與呼叫

var funce = ;

for(var i = 0; i < 3; i++)

}for(var j = 0; j < 3; j++)

複製**

答案:列印3次3

解析:第乙個for函式宣告for迴圈結束i為3,但函式未呼叫。第二個for迴圈了3次分別呼叫了函式。所以列印了3次3。

建構函式與原型

建構函式是給物件新增屬性,初始化屬性用的。1 神秘物件與建構函式 2 神秘物件與建構函式所建立出來的物件 既然所有物件共享神秘物件 建構函式.prototype 內的屬性和方法。我們只需要將需要共享的東西,也就是重複占用記憶體的東西,全部都放到 神秘物件 建構函式.prototype 中。關鍵點 每...

建構函式與原型物件

1.建構函式中的屬性和方法我們稱為成員,成員可以新增 2.例項成員 建構函式內部通過this新增的成員 uname,age,sing 就是例項成員 例項成員只能通過例項化的物件來訪問 3.靜態成員 在建構函式本身上新增的成員 靜態成員只能通過建構函式來訪問 建構函式的問題 建構函式方法很好用,但是存...

建構函式與原型物件

建構函式本身就是乙個函式,只不過該函式是出於建立新物件的目的而建立的。建構函式與其他函式的唯一區別,就在於呼叫他們的方式不同。任何函式,只要通過new操作符來呼叫,那他就可以作為建構函式 而任何函式,如果不通過new操作符來呼叫,那它跟普通函式也沒有什麼兩樣。當做構造函式呼叫 let person1...