// 單例模式 解決分組問題 讓每一個對象有本身的命名空間
var person1 = {
name: "icss";
age: 25;
};css
var person2 {
name: "sas";
age: 26
}
// 工廠模式 實現同一事情的代碼 放在一個函數中 其實就是函數的封裝 體現了高內聚 低耦合
function createPerson(name, age) {
var obj = {};
obj.name = name;
obj.age = age;
obj.writejs = function() {
console.log(this.name + "write js");
}
return obj;
}
var p1 = createPerson("zhang", 26);
p1.writejs();java
var p2 = createPerson("li", 26);
p1.writejs();c#
// 重載 js不一樣於java \ c#等強語言瀏覽器
// 構造函數模式
function CreateJsPerson(name, age) {
this.name = name;
this.age = age;
this.writeJs = function() {
console.log(this.name + 'write js');
}
// 瀏覽器再把建立的實例默認的進行返回
}
var p1 = new CreateJsPerson('iceman', 25);
p1.writeJs();
var p2 = new CreateJsPerson('mengzhe', 26);
p2.writeJs();函數
// 檢測是否屬於類 須要用instanceof 而不能用 typeof(由於只能檢測基本的數據類型)
function Fn() {
this.x = 100;
this.getX = function() {
console.log(this.x);
};
}
var f1 = new Fn;
console.log(f1 instanceof Fn); // --> true
console.log(f1 instanceof Array); // --> false
console.log(f1 instanceof Object); // --> truethis
// this js中主要研究的就是this 全局的this是window 就是瀏覽器對象 對象
// 在JavaScript中主要研究的都是函數中this,可是並非只有函數中才有this,全局的this是window。
//
// JavaScript中的this表明的是當前行爲執行的主體,JavaScript中的context表明的是當前行爲執行的環境。
//
// 首先明確:this是誰,和函數在哪裏定義,在哪裏執行都沒有任何的關係,那麼如何區分this呢?
//
// 函數執行,首先看函數名前面是否有".",有點話,"."前面是誰,this就是誰,沒有的話,this就是window;
//
// 自執行函數中的this永遠是window;
//
// 給元素的某一個事件綁定方法,當事件觸發的時候,執行對應的方法,方法中的this是當前的元素。事件