//私有方法:私有方法本身是可以访问类内部的所有属性(即私有属性和公有属性),但是私有方法是不可以在类的外部被调用
//对象的私有方法和属性,外部是不可以访问的,在方法的内部不是能this调用对象的公有方法、公有属性、特权方法的
function js() {
var privateAttribute="私有属性";
function privateMethod_A() {
console.log("私有方法A,可以获取私有属性"+privateAttribute);
}
var privateMethod_B=function () {
console.log("私有方法B,可以获取私有属性"+privateAttribute);
}
//私有方法可以在函数作用域范围内使用
privateMethod_A();
privateMethod_B();
// 私有属性和方法还有个特点:都不能用this访问
// this.privateAttribute;
// this.privateMethod_A();
}
var instance=new js();
console.log(instance);//instance实例访问不到私有属性及私有方法
/*
* 公有方法
* 公有方法是可以在类外部调用的
*但是不能访问类的私有属性
*公有方法必须在类的内部或者外部通过类的prototype属性添加
* 特点:可以用this.new.prototype访问
* */
function gy() {
//公有变量在函数内或者实例都能访问
this.pubicAtrribute="公有属性";
this.publicMethod_A=function () {
console.log('公有方法A,'+this.pubicAtrribute);
}
//公有方法可以在类的内部添加
gy.prototype.pubicMethod_B=function () {
console.log('公有方法B'+this.pubicAtrribute);
}
//公有方法可以在函数作用域范围内使用,也可以在函索作用域范围外使用,可以被实例调用和继承
this.publicMethod_A();
this.pubicMethod_B();
// 公有属性和方法有个特点:在内部访问都必须用this访问
// publicMethod_A();错误
}
//公有方法也可以在类的外部通过类的prototype属性添加
gy.prototype.pubicMethod_C=function () {
console.log('公有方法C'+this.pubicAtrribute);
}
/*new一个实例*/
var g=new gy();
console.log(g.pubicAtrribute);
console.log(g.publicMethod_A);
//但是,通过实例添加公有属性是不行的