基于原生JavaScript封装对象模板

//样例使用对象
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;

})();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值