1. 程式人生 > >原型鏈的繼承都發生在建構函式上

原型鏈的繼承都發生在建構函式上

網上的一道題目:
var M = function() { this.person = "life" }, N = function() { this.gate = "ok" }; var k = new M(), l = new N();


k.__proto__ = l;

console.log(k.gate);

這麼寫是有問題的。

_proto_和prototype的區別。

首先應該是 k.prototype ...原型鏈的繼承都是基本都是發生在建構函式上的,所以在例項上進行繼承有點不靠譜。你這麼寫是沒有問題的:

m.prototype = new n;
m.prototype.constructor = m;
k = new m;
console.log(k.gate);

或者你也可以用簡單點的辦法:

var m = function(){
    n.apply(this, [].slice.call(arguments));
    this.person = "Life";
}
k = new m;
console.log(k.gate);

相關推薦

MINE筆記-面向物件程式設計,原型的理解,建構函式原型物件,例項化物件,prototype 運用

// to do list 建立建構函式,例項化物件,來做面向物件程式設計 // 建立建構函式--原型函式(原型物件) function person(name,age,id){ this.name = name; this.age = age; this.id =id // c

原型原型,物件,建構函式之間的聯絡。

一、首先說一下什麼是物件? ES把物件定義為:“無序屬性的集合,其屬性可以包含基本值,物件和函式”。嚴格來講,這就相當於說物件是一組沒有特定順序的值。物件的每個屬性或方法都有一個名字,而每個名字都對映到一個值。正因為這樣,我們可以把ES的物件想象成散列表:無非就是一組名值對

原型繼承發生建構函式

網上的一道題目:var M = function() { this.person = "life" }, N = function() { this.ga

js繼承 - 建構函式繼承,call apply改變this指向 原型繼承,混合繼承

1、建構函式繼承 function Person(name,age){ this.name = name; this.age = age; this.run = function(){ console.log('跑....'); } } functi

建構函式繼承,call apply改變this指向 原型繼承,混合繼承

1、建構函式繼承 function Person(name,age){ this.name = name; this.age = age; this.run = function(){ console.log('跑....'); }

Js中的原型繼承建構函式繼承,組合繼承

昨天學習了一下js的這三種繼承,感覺面試還是會問到,今天早上就總結了一下。都寫到了程式碼裡。 <script type="text/javascript"> // -----------------------------------------原型鏈繼承

原型繼承

() 能夠 ons 方法 type 調用 prototype 內部 而是   面向對象編程都會涉及到繼承這個概念,JS中實現繼承的方式主要是通過原型鏈的方法。 一、構造函數、原型與實例之間的關系   每創建一個函數,該函數就會自動帶有一個 prototype 屬性。該屬性是

js繼承原型繼承

lB peak new otp nta ber 是個 發現 實現 from:https://www.cnblogs.com/sarahwang/p/6870072.html 面向對象編程都會涉及到繼承這個概念,JS中實現繼承的方式主要是通過原型鏈的方法。 一、構造函數、原型

js原型繼承及調用父類方法

java word CA new pretty ret ava span conf function Rect(config){} Rect.prototype.area = function(){ alert("我是父方法"); } function my

javascript原型繼承

UNC 返回值 object def fin java tostring cti 指向 當定義一個函數的時候,函數對象就會默認帶一個prototype對象屬性。 通過new去構造一個對象(obj),它的原型會指向構造器的prototype屬性(foo.prototype)。

深入淺出理解JS原型繼承

引出 js在ES6以前還沒有class的概念,但卻存在著面向物件的思想。在js中,可通過建構函式的形式來建立物件,並使用各種方式實現繼承,其中原型鏈繼承便是一種普遍的方法 什麼是原型鏈繼承 先來看一個例子 function Parent () { this.type = 'obj'

JavaScript之原型繼承&注意點和缺點

原型鏈繼承 原型鏈作為實現繼承的主要方法,其基本思路是利用原型讓一個引用型別繼承另一個引用型別的屬性和方法, 建構函式,原型和例項之間的關係通過一張圖來解釋一下,需要詳細瞭解的可以看一下我的另外一篇文章 JavaScirpt 之原型&原型物件和原型鏈 原型鏈繼承的基本模式如下: funct

JavaScript之原型繼承&註意點和缺點

總結 而在 包含 存在 屬性 sta 是否 實踐 實現繼承 原型鏈繼承 原型鏈作為實現繼承的主要方法,其基本思路是利用原型讓一個引用類型繼承另一個引用類型的屬性和方法, 構造函數,原型和實例之間的關系通過一張圖來解釋一下,需要詳細了解的可以看一下我的另外一篇文章 JavaS

原型繼承的例子 和new 一個物件的過程

1.原型鏈繼承 function Elem(id){ this.elem = document.getElementById(id) } Elem.prototype.html=function(val){ var elem = this.elem; if(val

繼承-繼承類的建構函式

派生類的建構函式: 派生類不能直接訪問基類的私有成員,必須通過基類提供的公有方法。 派生類不能繼承基類的建構函式,因為建構函式和成員函式存在區別:建構函式用於建立新的物件,而其他成員函式是被現有的物件呼叫。 派生類建構函式必須使用基類的建構函式。建立派生類物件時,先建立基類物件,

javascript 原型 原型 繼承

每個函式物件都有一個prototype屬性,但普通物件沒有prototype屬性,prototype下面有一個constructor,指向這個函式 每個人物件有一個名為[[prototype]]

繼承派生類建構函式與解構函式順序

派生類建構函式形式: 派生類建構函式 (引數表):基類建構函式(引數表) 類物件成員1(引數表)... 類物件成員n(引數表)//只能用表示式的方式對類物件成員進行初始化 {...派生類自定義的資料成員初始化} 在派生類中,首先呼叫基類的建構函式,其次呼叫

原型 繼承 oop

//原型鏈 // 原型鏈 // 物件的__proto__它的是原型,而原型也是一個物件,也有__proto__屬性,原型的__proto__又是原型的原型,就這樣可以一直通過__proto__想上找,這就是原型鏈,當向上找找到Object的原型的時候,這條原型鏈就算到頭了 var M=func

C++在單繼承、多繼承、虛繼承時,建構函式、複製建構函式、賦值操作符、解構函式的執行順序和執行內容

一、本文目的與說明     1. 本文目的:理清在各種繼承時,建構函式、複製建構函式、賦值操作符、解構函式的執行順序和執行內容。     2. 說明:雖然複製建構函式屬於建構函式的一種,有共同的地方,但是也具有一定的特殊性,所以在總結它的性質時將它單獨列出來了。  

什麼是面向物件,原型原型繼承

Javascript是一種基於面向物件的語言,你所遇到的東西幾乎幾乎都是物件。面向物件重要的兩個概念:類和物件。這裡要分2種情況,在ES6之前,和ES6語法,這裡先說ES6之前,ES6之前是沒有類的概念的,於是就通過建構函式去模擬類,你可以理解為他們只是人類為了