1、this誤區
# 第三方學習- this不是函式自身的引用,
this
實際上是在函式被呼叫時建立的乙個繫結,它指向什麼,完全是由函式呼叫者來決定的。
var person =function(name) ;//例項化乙個person(通過new例項化時,此時的this指向alice這個物件.你可以列印出來測試一下)
var alice = new person('
alice');
// 不要這麼做!這個函式只會返回undefined,並且執行上下文是window(全域性)物件,你無意間建立了乙個全域性變數name。
person('2、new、prototype的理解bob'); //
=> undefined
#第三方教程
#幕課網:建立物件和原型鏈
var person = function() {};很簡單的一段**,我們來看看這個new究竟做了什麼?我們可以把new的過程等價於以下三步:var p = new person();
// 建立乙個空物件
1、var p = {};
// 可以通過執行 alert( p.__proto__ === person.prototype ) 來驗證。結果返回true
2、p.__proto__ = person.prototype;
// 通過這一步,p可以呼叫person中的屬性或函式
3、person.call(p);
當我們呼叫p.【屬性/方法】 的時候,首先p中沒有這個【屬性/方法】,如果沒有就會去__proto__中去找,也就是person.prototype
而這個 person.prototype 稱為 __proto__ 的原型
person.prototype事實上還有乙個原型:object.prototype,這個原型的作用是什麼呢?
我們注意到任何乙個物件都具有.tostring()等方法,這其實就是**於這個原型。
而 object.prototype 又指向了最終乙個原型,就是null。
這個過程就是原型鏈
3、js物件導向:例項方法和靜態方法
什麼是例項方法?簡單的來說就是必須例項化類物件才可以呼叫的方法,如:
var people= function什麼是靜態方法?不需要例項化類就可以直接呼叫,如:() {};
people.prototype =,
show:
function()}
//vm1008:1 uncaught typeerror: people.init is not a function(…)
people.init()
var p = new
people();
p.init();
var people = function4、js的封裝閉包(){};
people.test = function
()people.test();
(function5、js的設計模式待整理...()})()
js 關於this new 原型
1 this誤區 第三方學習 this不是函式自身的引用,this實際上是在函式被呼叫時建立的乙個繫結,它指向什麼,完全是由函式呼叫者來決定的。var person function name 例項化乙個person 通過new例項化時,此時的this指向alice這個物件.你可以列印出來測試一下 ...
關於js原型繼承
js的每個類都有乙個prototype物件 訪問物件的屬性時,會先訪問到物件自身是否有定義這個屬性 如果沒有定義,就會去訪問物件所屬型別的prototype物件是否有此屬性 原型繼承就是把型別的prototype指向乙個父類的新物件,這樣每派生乙個新類出來都會構造乙個新的父類物件作為原型,這個物件和...
js關於原型,原型鏈的面試題
之前面試的時候遇到過原型和原型鏈方面的題目,具體的已經忘了,只記得當時回答的稀里糊塗,今天查了一些資料,把自己所理解的寫出來,加深記憶。1,前提 在js中,物件都有 proto 屬性,一般這個是被稱為隱式的原型,該隱式原型指向構造該物件的建構函式的原型。函式比較特殊,它除了和其他物件一樣有 prot...