javascript - 请问JS私有变量为何无法访问?

WBOY
Lepaskan: 2016-08-23 09:17:43
asal
1065 orang telah melayarinya

<code>function Customer(name) {  
    var risk = 0;  
    this.name = name;  
}  
var customer = new Customer("aa"); 
console.log(customer.name);  // aa
console.log(customer.risk); // undefined  </code>
Salin selepas log masuk
Salin selepas log masuk

请问为何customer.risk无法访问而customer.name可以访问呢
risk是谁的私有变量呢?是customer的吗?如果是,为什么customer无法访问他自己的私有变量?

回复内容:

<code>function Customer(name) {  
    var risk = 0;  
    this.name = name;  
}  
var customer = new Customer("aa"); 
console.log(customer.name);  // aa
console.log(customer.risk); // undefined  </code>
Salin selepas log masuk
Salin selepas log masuk

请问为何customer.risk无法访问而customer.name可以访问呢
risk是谁的私有变量呢?是customer的吗?如果是,为什么customer无法访问他自己的私有变量?

这根本就不是你所说的私有属性。这只是你在函数里面声明了个变量。既然是属性,你也知道属性也有分是否私有,因此属性这个东西本身就有个 “他是属于谁的问题” 懂我意思没? 你把构造函数改下 改成 this.risk=0;你就会发现可以找到了,this在这里就是属性的主人。

怎么会接受这么一个答案?
在函数构造器内,使用var声明一个变量,可以认为这个变量是私有的,如果不以闭包或类似方式暴露出去,外面是无法访问的。而且risk也不是customer的私有变量,他和customer并没有关系,和Customer这个函数对象有关。
使用new运算符会返回一个对象,并且被调用函数构造器的this会指向将要返回的对象,所以你使用this声明的属性是可以被new返回的对象访问的。这有些类似于闭包,只不过闭包是个函数,这里是个对象罢了。

你都说了私有属性,能访问还能叫私有吗?

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!