1.es5
this.name = name;
this.age = age;
}
Person.prototype.getName = function(){
return this.name;
}
var person1 = new Person('parksoyeon',25);
console.log(person1.getName()); //parksoyeon
注:创建一个类,就是创建一个函数,在函数内部this上面添加属性方法,或者在原型上面添加属性方法。
想要访问this的值,需要new 实例,实例来调用;
prototype的实现有两种方式:
Person.prototype.getName = function(){};
Person.prototype = {
getName : function(){}
}
2.es6
class Person{
constructor(){
this.name = 'jack'
}
getName(){
console.log(this.name)
}
}
var person1 = new Person();
console.log(person1.getName()); //jack
注:es6的class其实是es5的语法糖形式,constructor构造器,是this值的绑定,getName 则是绑定在原型上面;
3.创建对象的安全模式
function Person(name,age){
this.name = name;
this.age = age;
}
//由于没有使用new ,只是执行了一遍Person(),但是Person里面没有return,就默认返回了undefined
var person = Person('jack',18);// person undefined
//为了防止忘记new来实例化对象,作如下修改
function Person(name,age){
if(this instanceof Person){
this.name = name;
this.age = age;
}else{
return new Person(name,age);
}
}