一个不成熟的编程员,写写 js 的面向对象
其实感觉本人 js 并未入门,甚至说也是个不合格的编程员,什么面向对象都不会,一直都往 Object 里面填方法,假装很对象的样子。
但学习嘛,这道坎还是得多试几下的,说不定就跨过去了呢。
个人喜欢用的两种构造对象的方法是这样的:
function createPerson(name, age) { var o = new Object(); o.name = name; o.age = age; o.getName = function () { return this.name; } return o; //使用return返回生成的对象实例 } var person = createPerson('Jack', 19);
据说这种叫工厂模式,但对我而言也就那样啦,和直接 var o = {name:"",age:"",fn:function(){}}; 不一样的是能创多个 o 了,不错不错
function Person(name, age){ this.name = name; this.age = age; this.getName = function () { return this.name; } } var person1 = new Person('Jack', 19);
据说这种叫构造函数模式,但对我而言也就那样啦,就加了 new 感觉挺爽的,真的有种产生新对象的感觉了,虽然 this 是个相当磨人又可爱的小妖精。
function Person(name, age){ this.name = name; this.age = age; } Person.prototype.getName = function(){ return this.name; } var person1 = new Person("Jack", 19);
据说这种叫原型模式,但对我而言也就那样啦,好像重写和扩展挺方便的样子。
后来好像还有混合型的,但我先不管了,再来玩玩面向对象里的继承吧,觉得是个用起来很爽的东西:
function Animal() { this.spacies = "Animal"; } // 继承 方法一: function fn1() { function Cat(name, color) { Animal.apply(this, arguments); this.name = name; this.color = color; } var cat = new Cat("小花1", "red"); console.log(cat.spacies ); } // 继承 方法二: function fn2() { function Cat(name, color) { this.name = name; this.color = color; } Cat.prototype = new Animal(); Cat.prototype.constructor = Cat; var cat = new Cat("小花2", "red"); console.log(cat.spacies); }
没错,我就是这么 low 逼,面向对象都还不会,你来打我呀,做人嘛,最重要的是开心咯,我下面给你吃?