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

基于原生JavaScript封装对象模板

2017-08-05 08:45 323 查看
//样例使用对象

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;


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