理解js中的例項方法,原型方法 靜態方法和內部方法

2021-10-07 23:14:45 字數 2186 閱讀 9075

剛學建構函式和他的例項以及一系列方法真的搞了好久才明白。

首先要明白實質上屬性和方法是一樣的,方法是屬性為引用型的函式。

內部方法

定義在函式內部的方法,內部方法只能被內部的方法呼叫

function

person()

} console.

log(work)

//work is not defined

靜態方法

靜態方法:是直接在建構函式上定義的方法,不能被例項呼叫,自身可以呼叫

function

person()

person.

sing

=function()

var p=

newperson()

p.main=

'sss'

//給例項新增屬性

console.

log(p.main)

//sss

person.

sing()

//singing

p.sing()

//報錯:bauncaught typeerror: p.sing is not a function

原型方法

通過prototype屬性在建構函式上新增的方法

function

person()

person.

sing

=function()

person.prototype.

eat=

function()

var p=

newperson()

person.prototype.

eat(

)//eating

p.eat(

)//eating

例項方法

因為在建構函式中this指向的是他的例項物件,所以定義在this中的變數和方法,只有例項才能訪問到,無法通過建構函式直接呼叫。

function

person

(name,age)

console.

log(

this

)//person

}var p=

newperson

('lily',20

) console.

log(p.name,p.age)

//lily 20

p.dance()

//dancing

person.

dance()

//uncaught typeerror: person.dance is not a function

綜合來看一下這些方法的使用吧

function

person

(name,age)

varfn

=function

(a,b)

var obj=

} console.

log(obj.

fn2())

//3}

person.

sing

=function()

person.prototype.

eat=

function()

var p=

newperson

('lily',20

)//構造例項

console.

log(p.name,p.age)

//lily 20

person.prototype.

eat(

)//eating

p.eat(

)//eating

p.main=

'sss'

//例項屬性

console.

log(p.main)

//sss

p.sing

=function()

p.sing()

//sing

person.

sing()

//singing

js中例項方法 靜態方法和原型方法詳解

之前一直以為建構函式可以直接訪問原型方法,是錯的,現在說一下 建構函式中this上新增的成員 在cat構造方法裡面,定義在this中的變數和方法,只有例項才能訪問到 如this.name,this.move,this.eat這些都是例項擁有,無法通過cat直接呼叫。function cat name...

js中例項方法 靜態方法

person.say function person.say 正常執行 var carl newperson carl.say 報錯我們給person這個類新增了乙個say方法,它在類上面的,所以,它實際上是乙個靜態方法.靜態方法 不能在類的例項上呼叫靜態方法,而應該通過類本身呼叫。類 class ...

理解js的原型鏈及繼承方法

一.認識原型鏈 js的建構函式 在es6之前沒有class關鍵字,使用建構函式來例項化乙個物件,建構函式方式方法首字母需要大寫,如下 function getmsg name,age 我們使用new關鍵字去例項化這個物件 const msg new getmsg tom 18 每次new乙個物件都會...