js寫類

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();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章