原型this的指向問題

2021-09-27 07:47:21 字數 3049 閱讀 4294

function

supertype()

supertype.prototype.name =

'ali'

;//在supertype.prototype指向的物件上增加了name屬性

//在supertype.prototype指向的物件上增加了sayname方法

supertype.prototype.

sayname

=function()

; supertype.prototype.

setname

=function

(name)

;var instance1 =

newsupertype()

;var instance2 =

newsupertype()

; instance1.

sayname()

;//ali

instance2.

sayname()

;//ali

instance1.

setname

('lucy');

instance1.

sayname()

;//lucy

instance2.

sayname()

;//lucy

<

/script>

將setname方法更改為:

this

.name=name;

之後再進行呼叫結果就會不同

var instance1 =

newsupertype()

;var instance2 =

newsupertype()

;

instance1.

sayname()

;//ali

instance2.

sayname()

;//ali

instance1.

setname

('lucy');

instance1.

sayname()

;//lucy

//輸出的結果不再是luce

instance2.

sayname()

;//ali

那麼我們就要思考為什麼更改過後就不是lucy而是ali?this的指向???

不是指向原型物件,而是指向例項

function

animal()

animal.prototype.name =

'張三'

; animal.prototype.

sayhello

=function()

; animal.prototype.

setname

=function

(name)

;var dog =

newanimal()

;var cat =

newanimal()

; dog.

sayhello()

;//張三

cat.

sayhello()

;//張三

1. console.

log(animal.

hasownproperty

("name"))

;//true

dog.

setname

('damao');

2. console.

log(animal.

hasownproperty

("name"))

;//true

dog.

sayhello()

;// damao

cat.

sayhello()

;//張三

為什麼1和2 列印的都是true??按道理來說1中列印的應該是false的,後來發現animal中有自己的name屬性

function

animal()

animal.prototype.name1=

"張三"

;//給原型上新增name1 屬性

animal.prototype.

sayhello

=function()

;

animal.prototype.

setname

=function

(name)

;var dog=

newanimal()

;var cat=

newanimal()

; dog.

sayhello()

; cat.

sayhello()

;1.console.

log(dog.

hasownproperty

("name1"))

;//false

2.console.

log(cat.

hasownproperty

("name1"))

;//false

dog.

setname

("damao");

3.console.

log(dog.

hasownproperty

("name1"))

;//true

4.console.

log(cat.

hasownproperty

("name1"))

;//false

dog.

sayhello()

;//damao

cat.

sayhello()

;//張三

<

/script>

從1 2 3 4前後兩次的列印我們可以總結出this是指向例項的!

原型指向的改變

例項物件的原型 proto 和建構函式的原型prototype指向是相同的 例項物件中的 proto 原型指向的是建構函式中的原型prototype 原型鏈 是一種關係,例項物件和原型物件之間的關係,關係是通過原型 proto 來聯絡的 人的建構函式 function person age 人的原型...

this指向建構函式原型鏈改變指向關係變動

輸出下面幾個方法得到結果 function foo this.a function foo.prototype.a function foo.a function foo.a 4 let obj new foo obj.a 2 foo.a 1解析 1.宣告的乙個函式foo 2.函式foo原型鏈上掛載...

this的指向問題

對於js基礎不是很好的我,一直不太懂this的指向問題。要搞懂這個還是得多動手。首先,我們知道 1.函式被呼叫時可以確定該函式內this的指向。因為函式中的this和arguments時兩個特殊的變數,在函式被呼叫時才會取得他們,而搜尋著兩個變數時只會在活動變數中找。2.確定函式被呼叫的位置,從而確...