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

2021-09-23 14:02:19 字數 1320 閱讀 2395

之前一直以為建構函式可以直接訪問原型方法,是錯的,現在說一下

建構函式中this上新增的成員 ,在cat構造方法裡面,定義在this中的變數和方法,只有例項才能訪問到:如this.name,this.move,this.eat這些都是例項擁有,無法通過cat直接呼叫。

function cat(name)

this.eat = function() 愛吃魚`)

}}//給cat建構函式新增靜態方法

cat.eat = function() 愛吃魚`)}

let cat = new cat('tom')

cat.eat() //cat愛吃魚 //這是靜態方法

cat.move() is not a function

cat.eat() //tom愛吃魚 //這是例項方法

cat.move() //移動 //這是例項方法

建構函式本身上新增的成員 

下面的cat.eat就是建構函式的靜態方法,不能通過例項呼叫

function cat(name)

}//直接定義在cat建構函式中,例項不能呼叫

cat.eat = function() 愛吃魚`)}

構造函式呼叫

cat.eat() //cat愛吃魚

cat.move() is not a function

let cat = new cat()

cat.eat() is not a function

原型中的方法例項和建構函式都可以訪問到

function cat() 

cat.eat = function()

cat.prototype.eat = function()

let cat = new cat()

cat.eat() //靜態方法

cat.prototype.eat() //原型方法,不用prototype就是列印靜態方法

cat.eat() //原型方法

簡而言之,例項方法就是只有例項可以呼叫,靜態方法只有建構函式可以呼叫,原型方法是例項和建構函式都可以呼叫,是共享的方法。

像promise.all和promise.race這些就是靜態方法,promise.prototype.then這些就是原型方法,new 出來的例項可以呼叫

let promise = new promise(function(resolve, rejected) ) 

promise.then() //then是原型方法

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

剛學建構函式和他的例項以及一系列方法真的搞了好久才明白。首先要明白實質上屬性和方法是一樣的,方法是屬性為引用型的函式。內部方法 定義在函式內部的方法,內部方法只能被內部的方法呼叫 function person console.log work work is not defined靜態方法 靜態方...

js中例項方法 靜態方法

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

js 靜態方法和例項方法

function f function.prototype.b function var f new f typeof f object typeof f function f.af.b function c 靜態方法 function test test.to function res test....