摘要:原型及原型鏈區(qū)別一下,普通對象和函數(shù)對象。原型的作用就是繼承。原型鏈在創(chuàng)建對象不論是普通對象還是函數(shù)對象的時候,都有一個叫做的內(nèi)置屬性,用于指向創(chuàng)建它的函數(shù)對象的原型對象??偨Y(jié)一下事實證明,真正起作用的不是,而是。
JavaScript原型及原型鏈
區(qū)別一下,普通對象和函數(shù)對象。函數(shù)對象才有prototype屬性。
函數(shù)對象:
</>復(fù)制代碼
function f1(){};
var f2 = function(){};
var f3 = new Function("str","console.log(str)");
普通對象:
</>復(fù)制代碼
var o3 = new f1();
var o1 = {};
var o2 =new Object();
簡單的說,凡是通過 new Function() 創(chuàng)建的對象都是函數(shù)對象,其他的都是普通對象。
原型的作用就是繼承。
原型鏈:
JS在創(chuàng)建對象(不論是普通對象還是函數(shù)對象)的時候,都有一個叫做__proto__的內(nèi)置屬性,用于指向創(chuàng)建它的函數(shù)對象的原型對象prototype。
原型對象prototype中都有個預(yù)定義的constructor屬性,用來引用它的函數(shù)對象。
</>復(fù)制代碼
person.prototype. constructor === person //true
Function.prototype.constructor === Function //true
Object.prototype.constructor === Object //true
總結(jié)一下:
</>復(fù)制代碼
var animal = function(){};
var dog = function(){};
animal.price = 2000;//
dog.prototype = animal;
var tidy = new dog();
console.log(dog. price) //undefined
console.log(tidy.price) // 2000
事實證明,真正起作用的不是prototype ,而是__proto__。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/78281.html
摘要:當(dāng)然這還沒完,因為我們還有重要的一步?jīng)]完成,沒錯就是上面的第行代碼,如果沒有這行代碼實例中的指針是指向構(gòu)造函數(shù)的,這樣顯然是不對的,因為正常情況下應(yīng)該指向它的構(gòu)造函數(shù),因此我們需要手動更改使重新指向?qū)ο蟆? 第一節(jié)內(nèi)容:javaScript原型及原型鏈詳解(二) 第一節(jié)中我們介紹了javascript中的原型和原型鏈,這一節(jié)我們來講利用原型和原型鏈我們可以做些什么。 普通對象的繼承 ...
摘要:執(zhí)行行代碼,我們可以看到控制臺打印出來的結(jié)果如下結(jié)果印證了我們上面講的內(nèi)容指向的構(gòu)造函數(shù)指向的原型對象原型對象中指向構(gòu)造函數(shù)。 在javascript中原型和原型鏈機(jī)制是最難懂的部分(沒有之一),同時也是最重要的部分,在學(xué)習(xí)的過程中你可能認(rèn)認(rèn)真真的看了一遍但還是完全不懂書上說的什么,的確是這樣的,我在學(xué)習(xí)的時候可是反復(fù)看了4、5遍才初步理解了。 下面我把我的理解總結(jié)了一下希望對你們有...
摘要:每個原型對象都有一個屬性指向關(guān)聯(lián)的構(gòu)造函數(shù)為了驗證這一說話,舉個例子。 本文共 1475 字,讀完只需 6 分鐘 一、概述 在 JavaScript 中,是一種面向?qū)ο蟮某绦蛟O(shè)計語言,但是 JS 本身是沒有 類 的概念,JS 是靠原型和原型鏈實現(xiàn)對象屬性的繼承。 在理解原型前,需要先知道對象的構(gòu)造函數(shù)是什么,構(gòu)造函數(shù)都有什么特點(diǎn)? 1. 構(gòu)造函數(shù) // 構(gòu)造函數(shù) Person() ...
摘要:在中,主要有兩種創(chuàng)建對象的方法分別是對象字面量以及調(diào)用構(gòu)造函數(shù)對象字面量調(diào)用構(gòu)造函數(shù)其實上述兩種創(chuàng)建對象的方法,本質(zhì)上是一樣的,都是引擎調(diào)用對象的構(gòu)造函數(shù)來新建出一個對象。 原型與原型鏈?zhǔn)莏avascript里面最最核心的內(nèi)容,如果不能理解它們之間的存在關(guān)系的話,那么我們是不能理解這門語言的。 在JS中,主要有兩種創(chuàng)建對象的方法, 分別是對象字面量以及調(diào)用構(gòu)造函數(shù) //對象字面量 va...
摘要:繼承簡介在的中的面向?qū)ο缶幊蹋^承是給構(gòu)造函數(shù)之間建立關(guān)系非常重要的方式,根據(jù)原型鏈的特點(diǎn),其實繼承就是更改原本默認(rèn)的原型鏈,形成新的原型鏈的過程。 showImg(https://segmentfault.com/img/remote/1460000018998684); 閱讀原文 前言 JavaScript 原本不是純粹的 OOP 語言,因為在 ES5 規(guī)范中沒有類的概念,在 ...
閱讀 3480·2019-08-30 13:15
閱讀 1416·2019-08-29 18:34
閱讀 846·2019-08-29 15:18
閱讀 3504·2019-08-29 11:21
閱讀 3275·2019-08-29 10:55
閱讀 3724·2019-08-26 10:36
閱讀 1893·2019-08-23 18:37
閱讀 1848·2019-08-23 16:57