Javascript是一种基于对象的语言,你遇到的所有东西几乎都是对象。但是,他又不是一种真正的面向对象编程的语言,因为他的语法中没有class类。
那么,如果我们要把“属性”(property)和“方法”(method),封装成一个对象,甚至要从原型对象生成一个实例对象,我们应该怎么做呢?
一、生成实例对象的原始模式
假定我们把猫看成一个对象,他有“名字”和“颜色”两个属性。
var cat = {
name: '',
color: ''
}
现在,我们需要根据这个原型对象的规格,生成两个实例对象。
var cat1 = {};
cat1.name = "大毛";
cat1.color = "黄色";
var cat2 = {};
cat2.name = "二毛";
cat2.color = "黑色";
好了,这就是最简单的封装了,把两个属性封装在一个对象里面。但是这样的写法有两个缺点,一是如果多生成几个实例,写起来就非常麻烦;二是实例与原型之间,没有任何办法可以看出有什么联系。
二、原始模式的改进
我们可以写一个函数,解决代码重复的问题。
function cat(name, color) {
return {
name: name,
color: color
}
}
然后生成实例对象,就等于是在调用函数: