日期:2014-05-16  浏览次数:20381 次

关于利用数组写成面向对象的讨论
var user=[
 {
  name:"Michael",
  age:"24",
  sayHello:function(){
  return 0
  },
  say:function(){
  this.x=10;
  this.y=20
  }, 
  sayBB:function(){
  this.x=100;
  this.y=200
  },  
  user2:[{name:"jackson",age:"30"},{name:"jackson",age:"30"}]
 },
 {
  name:"张雷"
 }
]


这种写法可以用,但是觉得看起比较混乱。这种写法是属于正规写法,还是非正规?

------解决方案--------------------
JScript code

var person = function(name,age){
    this.name = name;
    this.age = age;
}

person.prototype.say = function(){
    alert(this.name);
}

var people = [new person("name1",10),new person("name2",20)];

------解决方案--------------------
JS 中有标准的 Class 定义格式!

JScript code
function ClassName(p1v, p2v) {
    this.P1Name = p1v;
    this.P2Name = p2v;
}
ClassName.prototype.M1Name = function(params) {
    ...
};
ClassName.prototype.M2Name = function(params) {
    ...
};

var instance = new ClassName(v1, v2);

------解决方案--------------------
探讨
我觉得用这种数组的形式,还不如用构造函数方式,显眼。

------解决方案--------------------
探讨
引用:
我觉得用这种数组的形式,还不如用构造函数方式,显眼。

这种写法缩进较多,不易阅读,最重要的是根本没有明确体现OO的核心价值,即没有类!

OO 的核心价值在于 Class,既然用 OO 就应该明确声明 Class,否则就不是 OO!

------解决方案--------------------
这种方法挺好的,使用构造函数,那是你没有遇到this问题,等你遇到了
你就知道这种方法好了