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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

JavaScript简单重写构造器的原型

發布時間:2023/11/27 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript简单重写构造器的原型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

 1 //簡單重寫原型對象:
 2 
 3 //一個構造函數Person
 4 function Person(){
 5     
 6 }
 7 //重寫Person的原型
 8 //把Person的原型賦值給一個新的對象 是我們重寫的過程
 9 Person.prototype={
10     // 對于構造器 如果我們不給他寫,則構造器就是Object的構造器了
11 constructor:Person, //加上構造器屬性 這里有一點問題 因為構造器屬性是不可枚舉的,這里無法設置
12 name:"張三",
13     sayName:function(){
14         alert(this.name);
15     }
16 };
17 
18 var p1 = new Person();
19 alert(Person.prototype.constructor);
20 
21 /*
22     以上我們認為模擬重寫了一個構造函數的原型
23     但是有很多問題。構造器是不可枚舉的,在這里我們無法實現不可枚舉屬性。
24     
25     在js中提供Object.defineProperty(對象,屬性,配置) 來實現設置屬性的一些性質
26     重寫一個原型就可以這樣實現:
27 * */
28 Object.defineProperty(
29     Person.prototype ,     //要配置的對象
30 "constructor",    //配置對象的構造器 構造器
31 {        //構造器的特性
32     enumerable :false,    //構造器 不可枚舉
33     value : Person    //構造器的值是Person
34     }
35 );
36 // 通過以上方式重寫 就把構造器設置成不可枚舉了
37 var p2 = new Person();
38 for(attr in p2){
39     alert(attr);
40 }
41 
42 /*
43     注意:由于語言的動態性
44     
45         在實例化對象之后 如果給原型添加屬性或方法,實際上實例對象是能調用后添加的屬性和方法
46         實例化之后 重寫原型,實際上實例的原型還是指向原來的原型對象 不是新的原型對象
47 */
48 function Person(){
49     
50 }
51 var p1 = new Person();
52 Person.prototype.name="哈哈";
53 alert(p1.name);    //哈哈  因為p1的原型引用調用之前已經添加屬性 可以使用
54 
55 var p2 = new Person();
56 Person.prototype = {
57     constructor : Person,
58     name:"xixi"
59 };
60 alert(p2.name);    //哈哈,實例對象之后改變構造器的原型,實例的對象的原型還指向原來的
61 
62 var p3 = new Person();
63 alert(p3.name);    //xixi  因為這是在改變構造器原型之后的實例對象

?

轉載于:https://www.cnblogs.com/Lin-Yi/p/7439987.html

總結

以上是生活随笔為你收集整理的JavaScript简单重写构造器的原型的全部內容,希望文章能夠幫你解決所遇到的問題。

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