js 例項 物件 繼承 學習筆記

2021-10-09 07:36:43 字數 2380 閱讀 2752

例項:通過new方式例項的物件

原型物件:prototype,在建構函式裡

建構函式和函式:不同的執行方式,this指向有所區別

function foo()

var foo = new foo();

console.log(foo);//

function foo()

foo.prototype =

var foo = new foo();

console.log(foo.aa);//

訪問原型的方式:

例項後的物件.__proto__  (不推薦)

建構函式.prototype

object.getprototypeof(例項後的物件)

原型的終點:object.prototype     es6

原型物件上的乙個屬性

指向物件的建構函式

定義原型的時候最好定義一下constrctor屬性

引用值共享問題

sub.prototype = new super();

function super()

super.prototype.say = function()

function sub()

var sub1 = new sub();//拿不到sub原型super的say方法

var sub2 = new sub();

沒辦法拿到原型上的方法

function super()

super.prototype.say = function()

function sub()

sub.prototype = new super();//sub的原型先繼承一次super的

var sub1 = new sub();//呼叫時再super.call(this)覆蓋一次屬性值

var sub2 = new sub();

sub1.a = '333';//只有sub1的a值改變了,sub2沒改,所以引用值共享問題解決

sub1.say();//222

sub2.say();//222

//原型上的方法也可以拿到了

偽經典:呼叫兩次super

function super()

super.prototype.say = function()

function sub()

= new super();

sub.prototype = object.create(super.prototype);返回乙個物件,使當前物件的原型為傳入的引數

//讓sub的原型直接為super的原型,繞過super例項化的過程

是es5的方法,es3中需要寫相容性方案

/*if(!object.create)

f.prototype = proto;

return new f();

}}*/

var sub1 = new sub();

var sub2 = new sub();

sub1.a = '333';

sub1.say();//222

sub2.say();//222

sub.prototype如果在繼承super之前定義了方法,這些方法就會丟失

function teacher()

teacher.prototype =

var t = new teacher();

console.log(t);

function student()

function buffer(){}

buffer.prototype = teacher.prototype;

var buffer = new buffer();

student.prototype = buffer;

student.prototype.age = 18;

var s = new student();

console.log(s);

//聖杯模式

buffer將teacher.prototype進行了一層封裝,讓student不能修改teacher.prototype

語法糖

class super

class sub extends super{}

//可以不定義constrctor,會自動定義

JS 學習筆記 物件導向和類的繼承

程式設計中乙個有兩個程式設計思想,其中乙個是面向過程,另乙個是物件導向。下面分別介紹一下這兩種程式設計方式。面向過程程式設計全稱為 process oriented programming 可以簡稱為 pop。面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟逐步實現,使用的時候再依次呼叫...

js物件繼承

自有屬性 own property 物件本身具有的屬性 繼承屬性 從原型物件 prototype object 繼承而來 物件的查詢過程 查詢過程中,查詢物件o的屬性x,如果o的屬性不存在x,則對o的原型物件進行查詢,使原型鏈查詢。屬性賦值操作過程 屬性賦值過程中,先檢查原型鏈,以此判斷是否允許賦值...

JS物件 繼承

js物件定義的方法 方法一 通過var object 物件字面量 1 可以叫物件直接量來自定義乙個物件。物件自面量是乙個表示式,這個表示式的每次運算都建立並初始化乙個新物件 2 還可以換行寫,每義定乙個屬性名和值,用逗號分開,最後乙個不加逗號,加了會被忽略,但在ie中會報錯,最好不要加 方法二 通過...