筆記 JS易忘基礎知識(二)(關於物件和繼承)

2022-02-22 02:23:23 字數 1055 閱讀 1740

1 ecmascript中所有變數都採用晚繫結的方法,不支援早繫結。晚繫結是指我們的**在執行時再檢查物件是否提供了我們所需要的方法和屬性。

2 array物件就像乙個棧,提供了push和pop方法。array物件又像乙個佇列,提供了shift和push方法。

3 物件有為三種:本地物件、內建物件和宿主物件。內建物件只有兩個:global和math,都屬於本地物件。

4 ecmascript只存在公用作用域

5 定義類或物件一般使用「建構函式+原型」方式:用建構函式定義所有非方法的成員,用原型定義方法成員。

實現繼承一般使用「物件冒充(object masquerading)+原型鏈」方式:用物件冒充繼承建構函式的所有成員,用原型鏈繼承原型的方法(用了原型鏈,instanceof運算子才有效)。

function animal(animalname)

animal.prototype.showname = function()

function bird(birdname, birdcolor)

bird.prototype = new animal();

bird.prototype.showcolor = function()

var bird = new bird("woohu", "red");

bird.showname();

bird.showcolor();

6 改進字串處理(將第一段改進為第二段,節約一半時間):

**一:

var str = "hello";

str += "world";

**二:

function stringbuffer()

stringbuffer.prototype.tostring = function()

7 極晚繫結:你甚至可以在物件例項化後在定義它的方法,如下

var o = new object();

object.prototype.fn = function();

o.fn();

不過不建議使用極晚繫結,因為很難對其進行跟蹤和記錄。

js基礎知識(二)

date.now 獲取當前時間毫秒數 var dt new date dt.gettime 獲取毫秒數 dt.getfullyear 年 dt.getmonth 月 0 11 1 dt.getdate 日 0 31 dt.gethours 小時 0 23 dt.getminutes 分鐘 0 59 ...

JS 基礎知識(二)

1 變數提公升問題 view code 這段 會輸出undefined,為什麼呢?這就涉及到js中的乙個變數提公升問題。其實上面的fun函式 相當於 function fun 所以才會列印出undefined。在函式體內變數的宣告會被提公升到最頂端。2 變數生命問題 var a b c 20 等價於...

js基礎知識易錯點(一)

最近替另乙個專案招人,要求基礎知識好,隨便問了一些基礎題,發現了一些易錯的點,總結一下。1 判斷乙個空陣列 var arr 1 json.stringify arr 2 arr instanceof array arr.length 0 3 array.prototype.isprototypeof...