学习:JS中创建自己的对象和在定义中包含方法

1.创建自己的对象

要创建自己的对象实例,必须首先为其定义一个构造函数。构造函数创建一个新对象,赋予对象属性,并在合适的时候赋予对象方法

// people 是有3个参数的构造器
function people(name, age, sex){
    // 属性:姓名
    this.name = name;
    // 属性:年龄
    this.age = age;
    // 属性:性别
    this.sex = sex;
}
// 定义了对象构造器后,用new运算符创建对象实例
var zhangsan = new people('张三', 18, '男');
var lisi = new people('李四', 19, '男');

可以给对象实例添加属性以改变该实例,但是用相同的构造器生成的其他对象实例中并不包括这些属性,除非你特意添加这些属性在其他实例中。

// zhangsan的附加属性
zhangsan.car = '奔驰';
console.log(zhangsan.car);
// lisi并没有添加car属性
console.log(lisi.car); // undefined

如果要将对象所有实例的附加属性显示出来,必须将它们添加到构造函数或构造器原型对象中。

// 将属性 eat 加到 people 原型对象
people.prototype.eat = '肉嘎嘎';
zhangsan.eat = '鸡肉';
console.log(zhangsan.eat); // 鸡肉
console.log(lisi.eat); // 肉嘎嘎

2.在定义中包含方法

可以在对象的定义中包含方法(函数)。一种方法是在引用别处定义的函数的构造函数中添加一个属性

// people 是有3个参数的构造器
function people(name, age, sex){
    // 属性:姓名
    this.name = name;
    // 属性:年龄
    this.age = age;
    // 属性:性别
    this.sex = sex;
    // 这里添加toString方法
    // 注意在函数的名称后没有加圆括号
    // 这不是一个函数调用,而是对函数自身的引用
    this.toString = peopleToString;

}

// 实际是用来显示people对象内容的函数
function peopleToString(){
    return "name:"+this.name+"\n"+
            "age:"+this.age+"\n"+
            "sex:"+this.sex;
}

var lisi = new people('李四', 18, "女");
console.log(lisi);

猜你喜欢

转载自blog.csdn.net/qq_28137309/article/details/82660806