基于原生JavaScript封装对象模板

来源:互联网 发布:唯一网络王宇杰老婆 编辑:程序博客网 时间:2024/06/05 02:38

//样例使用对象
onload = function(){
var p1 = new Person(‘zzh’,12);
p1.sayWord();
console.log(p1.drink);

    Person.test2();    console.log(Person.eat);    p1.getHome();    console.log(p1.age);    var p2 = new Person('hsy',12);    p2.getHome();    console.log(p2.age);    console.log(p1.test == p2.test); // true 证明静态私有变量共享性

}
//创建Person对象
var Person = (function(){

    // 静态私有属性(只能在内部调用)    var home = "china";    // 静态私有方法(只能在内部调用)    function sayHome(name){        console.log(name + "'s home in " + home);    }// 构造函数function _person(name,age){    var _this = this;    //构造函数安全模式,避免创建时候丢掉new关键字    if(_this instanceof _person){        // 公有属性和方法        _this.name = name;        _this.getHome = function(){            sayHome(_this.name);        };        _this.test = sayHome; //用于测试        // 构造器        _this.setAge = function(age){            _this.age = age + 12;        }(age);    }else{        return new _person(name,age);    }}// 静态方法 只能被类访问_person.test2 = function(){    console.log("you are so man");}// 静态属性 只能被类访问_person.eat = "eat some banana";_person.prototype.test3 = function(){  // ???????    console.log("you are a girl");}// 静态公共属性方法_person.prototype = {    constructor:_person,    drink:'water', // 可以通过对象进行访问 不能通过类名进行访问    sayWord:function(){ // 可以通过对象进行访问 不能通过类名进行访问        console.log('you are a boy');     }}return _person;

})();

原创粉丝点击