日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

面向对象的程序设计之原型模式

發布時間:2025/5/22 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面向对象的程序设计之原型模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原型模式,每個創建的對象都有一個prototype屬性,這個屬性是一個指針,指向一個對象,而這個對象的用途是包含可以由特定類型的所有實例共享的屬性和方法。
------------------------------------------------------------------------

  • isPertotypeOf()方法來確定對象之前是否存和原型之間的關系;

  • 不能重寫原型中的屬性,如果給對象實例添加的屬性與實例原型中的一個屬性同名,那么在實例對象中創建的屬性會將原型中的屏蔽掉??梢杂胐elete刪除實例對象中自己添加的屬性;

  • hasOwnPrototype()可以確定屬性是原型中還是實例對象中,當時實例對象中時,返回的是true;

  • in操作符,有兩種使用方式,單獨使用和for-in 循環中。單獨使用,通過對象能夠訪問屬性時返回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; //刪除創建實例person1時賦值的name person1.sayName();var person2=new Person(); person2.sayName();

基于原型模式創建的對象指向同一個對象,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); }

總結

以上是生活随笔為你收集整理的面向对象的程序设计之原型模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。