摘要:可以用刪除實例對象中自己添加的屬性可以確定屬性是原型中還是實例對象中,當時實例對象中時,返回的是操作符,有兩種使用方式,多帶帶使用和循環(huán)中。多帶帶使用,通過對象能夠訪問屬性時返回,無論時在原型中還是實例對象中。
原型模式,每個創(chuàng)建的對象都有一個prototype屬性,這個屬性是一個指針,指向一個對象,而這個對象的用途是包含可以由特定類型的所有實例共享的屬性和方法。
------------------------------------------------------------------------
isPertotypeOf()方法來確定對象之前是否存和原型之間的關系;
不能重寫原型中的屬性,如果給對象實例添加的屬性與實例原型中的一個屬性同名,那么在實例對象中創(chuàng)建的屬性會將原型中的屏蔽掉。可以用delete刪除實例對象中自己添加的屬性;
hasOwnPrototype()可以確定屬性是原型中還是實例對象中,當時實例對象中時,返回的是true;
in操作符,有兩種使用方式,多帶帶使用和for-in 循環(huán)中。多帶帶使用,通過對象能夠訪問屬性時返回true,無論時在原型中還是實例對象中。
下面是依據以上屬性、方法列舉的實例
function Person(){ } Person.prototype.name="Nike"; Person.prototype.age=29; Person.prototype.job="Software Engineer"; Person.prototype.sayName=function(){ alert(this.name); }; function test(){ var person1=new Person(); person1.name="TONY"; //delete person1.name; //刪除創(chuàng)建實例person1時賦值的name person1.sayName(); var person2=new Person(); person2.sayName();
基于原型模式創(chuàng)建的對象指向同一個對象,person1和person2訪問的都是同一組屬性和同一個sayName()函數,所以返回是true
alert(person1.sayName==person2.sayName);
判斷實例對象是否是Person原型模式,person1是Person的原型模式
alert(window.Person.prototype.isPrototypeOf(person1));
hasOwnProperty()方法判斷屬性是否是實例對象中,如果是,返回true
alert(" person1:"+person1.hasOwnProperty("name")+" person2:"+ person2.hasOwnProperty("name"));
in操作符,name屬性是否在person1對象中,該屬性是實例對象自己賦值的
alert( "name" in person1);
in操作符,name屬性是否在person2對象中,該屬性是原型模式中的
alert("name" in person2);
判斷對象的屬性是否是原型中的,屬性在對象中,而且不是實例對象自己賦值的便會返回true
alert(hasOwnPropertyIn(person1,"name"); alert( hasOwnPropertyIn(person2,"name"));
可以將in操作符與hasOwnProperty()方法一起使用,用于判斷屬性是否是原型中值
function hasOwnPropertyIn(object,sub){ return (!object.hasOwnProperty(sub)) && (sub in object); }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/85702.html
摘要:在基于原型的面向對象方式中,對象則是依靠構造函數和原型構造出來的。來看下面的例子優(yōu)點與單純使用構造函數不一樣,原型對象中的方法不會在實例中重新創(chuàng)建一次,節(jié)約內存。 我們所熟知的面向對象語言如 C++、Java 都有類的的概念,類是實例的類型模板,比如Student表示學生這種類型,而不表示任何具體的某個學生,而實例就是根據這個類型創(chuàng)建的一個具體的對象,比如zhangsan、lisi,由...
摘要:對象的定義無序屬性的集合屬性的值可以是基本值對象或者函數每個對象都是基于一個應用類型創(chuàng)建的這個引用類型可以是內置的例如也可以是用戶自定義的基于創(chuàng)建對象所有的對象都是繼承自的因此我們可以從著手創(chuàng)建對象通過關鍵字創(chuàng)建對象通過對象字面量創(chuàng)建對象基 對象的定義:無序屬性的集合,屬性的值可以是基本值、對象或者函數.每個對象都是基于一個應用類型創(chuàng)建的,這個引用類型可以是內置的(例如Object A...
摘要:原型模式平行的繼承層次使用工廠模式在大型設計中,必須去維護大量的產品類。上文中,稱之為特殊的耦合在這里我們介紹一種其抽象工廠模式的變體原型模式。面向對象設計模式目錄 原型模式 平行的繼承層次使用工廠模式在:大型設計中,必須去維護大量的產品類。(上文中,稱之為特殊的耦合) 在這里我們介紹一種其抽象工廠模式的變體:原型模式。它使用clone關鍵詞,來復制具體產品類,使得具體產品類能完成自我...
摘要:組合使用構造函數模式和原型模式創(chuàng)建自定義類型的最常見方式,就是組合使用構造函數模式與原型模式。也就是說,寄生構造函數模式下,構造函數創(chuàng)建的對象與在構造函數外創(chuàng)建的對象沒有什么不同。 前言 最近在細讀Javascript高級程序設計,對于我而言,中文版,書中很多地方翻譯的差強人意,所以用自己所理解的,嘗試解讀下。如有紕漏或錯誤,會非常感謝您的指出。文中絕大部分內容引用自《JavaScri...
摘要:很多情況下,通常一個人類,即創(chuàng)建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
閱讀 2815·2021-10-13 09:48
閱讀 3776·2021-10-13 09:39
閱讀 3586·2021-09-22 16:04
閱讀 1816·2021-09-03 10:48
閱讀 837·2021-08-03 14:04
閱讀 2358·2019-08-29 15:18
閱讀 3400·2019-08-26 12:19
閱讀 2869·2019-08-26 12:08