var obj = {};
obj.x = 1;
var bjo = inherit(obj);
bjo.x = 2;
console.log("x" in obj);//屬性名(字符串) obj是否包含屬性x
console.log(obj.x,bjo.x);
//繼承
function inherit(proto) {
//proto是一個對象,但不能是null
if(proto == null) throw TypeError();
if(Object.create) return Object.create(proto); //如果Object.create()存在,使用它
var t = typeof proto; //否則進一步檢查
if(t!=='object' && t!=='function') throw TypeError();
var F = function() {}; // 定義一個空構造函數
F.prototype = proto; // 將其原型屬性設置爲proto
return new F(); // 使用F()創建proto的繼承對象
}
/*三、極簡主義法
* 這種方法不使用this和prototype,代碼部署起來非常簡單,這大概也是它被叫做"極簡主義法"的原因。
* 1.首先,它也是用一個對象模擬"類"。在這個類裏面,定義一個構造函數createNew(),用來生成實例。
* 2.然後,在createNew()裏面,定義一個實例對象,把這個實例對象作爲返回值。
* 3.使用的時候,調用createNew()方法,就可以得到實例對象。
* 這種方法的好處是,容易理解,結構清晰優雅,符合傳統的"面向對象編程"的構造
* */
var Cat = {
sound:"喵喵!",//共有變量
createNew: function(){
//var sound = "喵 喵 喵";//私有變量
var cat = {
makeSound:function(){
alert(Cat.sound);
},
chooseSound:function(v){
Cat.sound = v;
alert(Cat.sound);
}
};
return cat;
}
};
var cat1 = Cat.createNew();
var cat2 = Cat.createNew();
cat1.makeSound();
cat2.makeSound();
cat2.chooseSound("啦啦啦");
cat1.makeSound();
js寫類
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.