对象私有属性方法和公有属性方法

181 阅读1分钟

创建构造函数

function Person(name,age){
    var num = 1; //私有属性
    function checkId(){
        console.log('我是私有方法'); //私有方法
    }
    //公有属性和公有方法
    this.name = name;
    this.age= age;
    this.printInfo=function(){
        console.log(this.name+this.age);
     }
}

构造函数实例化

var zhangsan = new Person('zhangsan',28)

执行结果

zhangsan.printInfo();  //zhangsan28
zhangsan.checkId();

由上可见:实例化后,zhangsan可以获取公有的对象和属性,无法获取私有对象和属性

注:1、通过 JavaScript 函数级作用域的特征来实现在函数内部创建外界就访问不到的私有化变量和私有化方法

2通过 new 关键字实例化对象时,由于对类执行一次,所以类的内部this上定义的属性和方法自然就可以复制到新创建的对象上,成为对象公有化的属性与方法,而其中的一些方法能访问到类的私有属性和方法,

3、prototype对象中的属性和方法称为共有属性和共有方法

静态公有属性和方法

Person.isMan = true ;
Person.checkMan = function(){
   console.log('我是静态公有方法')
}

静态公有属性和方法,实例化对象是不能访问的。

使用protoype,则是公有属性和方法,对象能访问

Person.prototype = {
    isWoman : false ,
    checkWoan : function(){
	console.log('我是公有方法')
    }
}

原因如下:因为新对象的prototype和类的prototype指向的是同一个对象