關於javascript,,首先,我們得知道三個概念,基本OOP概念:Scope,Cloures,Context( 作用於,閉包,上下文)。對於OOP的應用,則需要知道 Constructors,Method( Public ,private,Privileged).
以上,內容由於時間關係,暫時不整理,今天主要記錄一下遇到得問題。
Q1:關於構造函數的三部曲。有如下一個構造函數,
var User = function (name) {
this.name = name;
function welcome () {
alert( “Welcome back, ” +this.name + “.”);
}
welcome();
}
var me = new User( “Bob” ); // Alerts: “Welcome, Bob.”
var user = function User(){var obj = {};
obj.constructor =User;
return obj;}
function Universe(){
var instance = this;
this.time_s = 0;
this.bang = "big";
Universe = function (){
debugger
return instance;
}
};
var uni1 = new Universe();
var uni2 = new Universe();
uni1 === uni2 // true;
function Universe(){
var instance;
Universe = function Universe(){
return instance;
}
Universe.prototype = this; //外部構造函數產生的實例
instance = new Universe(); //instance 並不是Undefined,它繼承了父類原型上的屬性和方法
// instance.constructor = Universe;
instance.time_s = 0;
instance.bang = "big";
return instance; //返回內部Universe的實例,第一次調用的時候new Universe()返回的也是內部Universe的實例。
}
測試用例如下:
Universe.prototype.nothing = true true var uni = new Universe() undefined Universe.prototype.everything = true true var uni = new Universe() undefined var uni2 = new Universe() undefined uni ===uni2 //他們是相同的實例 true uni.nothing&&uni.everything&&uni2.nothing&&uni2.everything//所有原型屬性都起作用 true uni.bang "big" uni.constructor===Universe false