之前一直以為建構函式可以直接訪問原型方法,是錯的,現在說一下
建構函式中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....