標籤:for object 方法 -- comm 組成 zhang 迴圈 實現
物件導向:
變數和屬性一樣的。
屬性:屬於一個對象
變數:屬於任何一個人
函數:
方法:屬於一個對象
痛點:
this:當前的方法屬於誰,this就是誰的
例子
window.show = function(){
alert(this);
}
//this是window
function show(){
alert(this);
}
Object:用來實現對象
var obj = new Object();
例子:
var obj = new Object();
obj.name = "zhaobw";
obj.age = "12";
obj.showName = function(){
alert("我的名字:"+this.name);
}
obj.age = function(){
alert("我的年齡:"+this.age);
}
/*
*缺點:如果多個對象就會很麻煩
*/
改進:
模式:原廠模式
缺點:
(1)沒有new
(2)函數不能共用
a.showname != b.shwoname
function createPerson(name,age)//建構函式
{
//原料
var obj = new Object();
//加工
obj.name = name;
obj.age = age;
obj.showName = function(){
alert("我的名字:"+this.name);
};
obj.age = function(){
alert("我的年齡:"+this.age);
};
//出廠
return obj;
}
var a = createPerson(‘zhaobw‘,‘12‘);
var b = createPerson(‘zhangsan‘,‘18‘);
在函數前加了new
系統會自動執行:
(1)var this = new object();
(2)return this;
改進:解決new
function createPerson(name,age)//建構函式
{
this.name = name;
this.age = age;
this.showName = function(){
alert("我的名字:"+this.name);
};
this.age = function(){
alert("我的年齡:"+this.age);
};
}
var a = new createPerson(‘zhaobw‘,‘12‘);
原型:
改進:解決函數共用的問題
(1)prototype給一組對象添加方法。
(2)解決函數共用了。
-------------------------------------------
function asd(){//建構函式
//不一樣的部分放在建構函式
}
asd.prototype.show = funcrion(){
//一樣的部分放在原型裡
}
--------------------------------------------
json寫對象
json裡可以放數字,字串,對象,函數
特點:簡單
適用範圍:整個程式只有一個對象
--------------------------------------------
命名空間:可以讓多個名字相同的函數存在
例
var zns = {};
zns.common = {};
zns.fs = {};
zns.site = {};
zns.common.getUser = function(){
alert("a");
};
zns.fs.getUser = function(){
alert("a");
};
---------------------------------------------
繼承
對象有屬性和方法組成
call可以改變函數執行的this
可以通過call來完成繼承屬性
方法繼承:
for(var i in A.prototype) {
B.prototype[i] = A.prototype[i];
}
*引用*
var arr1 = [1,2,3,4]
var arr2 =arr1;
arr1和arr2引用同一塊空間
改變arr1時arr2也會發生變化
避免引用:迴圈一遍就好
JavaScript物件導向學習筆記