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

WBOY
Freigeben: 2016-08-23 09:17:43
Original
1064 Leute haben es durchsucht

<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>
Nach dem Login kopieren
Nach dem Login kopieren

请问为何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>
Nach dem Login kopieren
Nach dem Login kopieren

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

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

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

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!