javascript – 构造函数内的公共与私有属性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 构造函数内的公共与私有属性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1594字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 构造函数内的公共与私有属性](/upload/InfoBanner/zyjiaocheng/819/af55c5a60ac34464ab88cb976cfa665f.jpg)
参见英文答案 > Javascript: Do I need to put this.var for every variable in an object? 6个
我发现了类似的问题,但没有一个明确地回答这个问题,所以我希望有人可以帮我解决这个问题.
关于构造函数,我试图确定变量和函数默认是公共的还是私有的.
例如,我有这个样本构造函数具有以下属性:
function Obj() {
this.type = 'object';
this.questions = 27;
this.print = function() {
console.log('hello world');
}
}
我可以这样称呼这些属性:
var box = new Obj();
box.type; // 'object'
box.print(); // 'hello world'
在我看来,默认情况下函数和变量都是公共的.是对的吗?
或者,如果构造函数内部的函数是私有的……它们只能将私有变量作为参数吗?
谢谢.
解决方法:
Javascript中的实例上的所有属性(使用this.property = xxx分配的内容)都是公共的 – 无论它们是在构造函数中还是在其他位置分配的.
如果使用Object.defineProperty(),则给定属性可以是只读的,也可以是getter或setter,但它们对外界都是可见的.
Javascript没有“私有”属性的内置语言功能.您可以在构造函数中将局部变量或局部函数用作私有,但它们仅适用于构造函数中定义的代码或方法.
所以,在你的例子中:
function Obj() {
this.type = 'object';
this.questions = 27;
this.print = function() {
console.log('hello world');
}
}
所有属性类型,问题和打印均可公开访问.
创建“私有”方法的一种方法是在构造函数中定义一个局部函数,如下所示:
function Obj() {
var self = this;
// this is private - can only be called from within code defined in the constructor
function doSomethingPrivate(x) {
console.log(self.type);
}
this.type = 'object';
this.questions = 27;
this.print = function(x) {
doSomethingPrivate(x);
}
}
这是使用构造函数闭包创建私有访问的更常见参考之一:http://javascript.crockford.com/private.html.
内容总结
以上是互联网集市为您收集整理的javascript – 构造函数内的公共与私有属性全部内容,希望文章能够帮你解决javascript – 构造函数内的公共与私有属性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。