在javascript中的新方法中使用构造函数中的privat-var
Using privat var from constructor in new method in javascript
我写了一个构造函数
function Human() {
var legs = 2;
var iq = 100;
}
然后我创建一个对象的实例
var Man = new Human();
并且想要添加一个新的方法
Man.getIQ = function() {
return iq - 10;
}
但我听说智商是不确定的。即使我使用this.iq。为什么对象范围内的var不能用于新方法?
变量legs
和iq
模拟Human
类的"私有"成员,因为它们仅在该闭包中可见(仅在Human函数中可见)
如果您想从该范围之外访问它们,则需要将它们绑定到this
关键字(this.iq=100;
),或者为每个私有成员实现getters和setters
function Human() {
var legs = 2;
this.getLegs = function(){
return legs;
};
}
无论如何,这些只是冰山一角;我解释了它们,这样你就可以理解为什么你试图做的事情失败了
如果我正确理解你想做什么,那么用js编写ideea oop的正确方法应该是这样的:
function Human(){}
Human.prototype = {
legs : 2,
iq : 100
};
function Woman(){}
Woman.prototype = new Human;
Woman.prototype.getIq = function(){
return this.eq - 10;
};
var womanInstance = new Woman();
// needless to say that this line is both wrong and misogynistic
alert('a woman has an iq of ' + womanInstance.getIq());
对不起,如果我被冲昏头脑了,但有很多文章&关于javascript oop的博客(比如这篇),我建议您在遇到此类问题之前/期间阅读。
相关文章:
- ES6构造函数返回基类的实例
- 使用Google Visualization动态调用构造函数
- javascript中对象构造函数中的var属性与this.properties
- 理解typescript中的构造函数接口
- 为什么构造函数不是构造函数
- 如果在构造函数中有“返回”,则在 JavaScript 中的新运算符中做了什么
- 拦截对构造函数的调用
- 使用闭包共享构造函数参数
- 文本表示法VS.构造函数,用于在JavaScript中创建对象
- 从js引擎的角度来看闭包和构造函数是如何工作的
- 如何使用此从对象访问构造函数
- Javascript:为什么是构造函数's __proto__属性Empty(){}
- 当一个重要的构造函数参数丢失时应该发生什么
- “var”变量,“this”变量和“global”变量 - 在JavaScript构造函数中
- JavaScript 构造函数中的“var”变量会发生什么
- 为什么可以't我使用'var'在构造函数函数中
- 在javascript中的新方法中使用构造函数中的privat-var
- 构造函数的区别:var X = function (){}, var X = function X(){}和functi
- 改变“;var”;在创建新实例的构造函数闭包内部
- var platform=new PlatformJS给出构造函数错误