写法
function Person (name,age,sex) {
var a = 10;//私有属性,属于Person类本身,不属于未来的那个对象
function fn1(){};//私有方法,属于Person类本身,不属于未来的那个对象
//在方法面前加static静态方法,也会变成私有属性
this.name = name;
this.age = age;
this.sex = sex;
//在构造函数中指向方法效率比较低,每一次实例化,方法都相当于重新构建了一次
// this.sayhello = function () {
// alert(this.name);
// };
}
//构造函数在实例化的一瞬间会被对象赋予一个prototype属性,表示上一层原型
//所以我们把方法构建在原型之上
Person.prototype = {
sayhello:function () {
console.log('hello,world');
},
saygoodbye: function () {
console.log('hi JS');
}
};
var a = new Person('zhangsan',40,'man');
a.sayhello();//hello,world
a.saygoodbye();//hi JS
console.log(a);//Person对象
ES6面向对象的写法---类继承
//class 类
class Person {//类名
//定义属性
constructor(arg1,arg2) {
//构造函数-->当你的类被实例化的瞬间就会主动的调用构造函数
this.name = arg1;
this.age = arg2;
//通过构造函数对对象的属性进行赋值
}
//定义方法
sayHello(par) {
console.log(par + this.name);
}
}
class Man extends Person {//让Man这个类继承自Person
constructor(where,name,age) {
super(name,age);//向父级传输数据
this.home = where;
}
whyHome() {
console.log('我的家在'+this.home+'你的呢?');
}
}
let a = new Man('北京','保罗乔治','26');
console.log(a);//Man对象
a.sayHello('hi');//hi保罗乔治
a.whyHome();//我的家在北京你的呢?
网友评论