您的位置:首页 > Web前端 > JavaScript

关于js面向对象的公有属性与私有属性的设置方法

2018-04-16 17:29 295 查看

先来看一段代码:

function Public(name, age) {
this.name = name
this.age = age
}
Public.prototype = ({
who: function () {
console.log(this.name)
},
old: function () {
console.log(this.age)
}
})
var Public = new Public('Tony', 30);
Public.who()
Public.old()

该段代码显示结果为:


公有属性是指在对象外可以访问到对象内的某个属性,如果你不想别人随意访问你写的对象的属性或者避免造成污染你可使用私有属性,设置私有属性的方法如下:

function Private(name, age) {
var name = name
var age = age
var who = function () {
console.log(name)
}
var old = function () {
console.log(age)
}
this.init = function () {
who()
old()
}
}

var Private = new Private('Tony', 30)
Private.init()
Private.who()
Private.old()

显示结果为:

私有属性只在函数内部可以访问,外部强行访问则会报错,这样设置可以使得使用对象的人只能使用对象,而不知道对象里面的而属性。另外,当你使用this来设置属性时需要注意,看下面一段代码:

function Private(name,age) {
this.name=name
this.age=age
var who=function () {
console.log(this.name)
}
var old=function () {
console.log(this.age)
}
this.init=function(){
who()
old()
}
}
var Private=new Private('Tony',30)
Private.init()

显示结果为:

第二个值为undefined,解决方法很简单,如下:
function Private(name,age) {
this.name=name
this.age=age
var that=this
var who=function () {
console.log(that.name)
}
var old=function () {
console.log(that.age)
}
this.init=function(){
who()
old()
}
}
var Private=new Private('Tony',30)
Private.init()


阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: