您的位置:首页 > Web前端 > JavaScript

JavaScript中的面向对象(一)——创建自定义对象

2015-07-21 20:48 751 查看
面向对象的语言有一个标志,那就是它们都有“类”的概念,通过类可以创建任意多个具有相同属性和方法的对象。JavaScript 中没有类的概念,因此它的面向对象与基于类的语言中的对象有所不同。JavaScript 对对象的定义是:无序属性的集合,其属性可以包含基本值、对象或者函数。可以把 JavaScript 对象理解成散列表,即一组名值对,其中的值可以是数据或函数。那么想要创建自定义对象,有以下几种常用方法:1.使用 Object 构造函数:[code=js;toolbar:false">var person = new Object();
person.name = "Lucy";
person.age = 24;
person.job = "nurse";
person.sayName = function() {
  console.log(this.name);
};function createPerson(name, age, job) {
  var o = new Object();
  o.name = name;
  o.age= age;
  o.job = job;
  o.sayName = function() {
    console.log(this.name);
  };
  return o;
}
var person1 = function("Lucy", 24, "nurse");
var person2 = function("Tom", 22, "engineer");person1.constructor === Person //true
person2.constructor === Person //truefunction Person(name, age, job) {
  this.name = name;
  this.age= age;
  this.job = job;
  this.sayName = new Function("console.log(this.name)");
}function Person() {
}
Person.prototype.name = "Lucy";
Person.prototype.age= 24;
Person.prototype.job = "nurse";
Person.prototype.sayName = function() {
  console.log(this.name);
};
 
var person1 = new Person();
var person2 = new Person();
person1.sayName() //Lucy
person2.sayName() //LucyObject.getPrototypeOf(person1) === Person.prototype //true
Object.getPrototypeOf(person1).name //"Lucy"delete person1.name;
person1.name //Lucy (来自原型对象)person2.name; //Lucy (来自原型对象)
"name" in person2; //true
person2.hasOwnProperty("name"); //false
person2.name = "Jordan";
"name" in person2; //true
person2.hasOwnproperty("name"); //truefunction Person() {
}
Person.prototype = {
  name: "Lucy",
  age: 24,
  job: "nurse",
  sayName: function() {
    console.log(this.name);
  }
};Person.prototype = {
  constructor: Person, //主动声明constructor
  name: "Lucy",
  age: 24,
  job: "nurse",
  sayName: function() {
    console.log(this.name);
  }
};function Person() {
}
var person1 = new Person();
Person.prototype = {
  constructor: Person,
  name: "Lucy",
  age: 24,
  job: "nurse",
  sayName: function() {
    console.log(this.name);
  }
};Person.prototype = {
  constructor: Person,
  name: "Lucy",
  age: 24,
  job: "nurse",
  friends: ["Lily", "Tom"],
  sayName: function () {
    console.log(this.name);
  }
};
var person1 = new Person();
var person2 = new Person();
person1.friends.push("Jordan");
person2.friends //"Lily, Tom, Jordan"
person1.friends === person2.friends //truefunction Person(name, age, job) {
  this.name = name;
  this.age= age;
  this.job = job;
  this.friends = ["Lily","Tom"];
  if (typeof this.sayName != "function") {
    Person.prototype.sayName =function() {
      console.log(this.name);
    };
   }
}function SpecialArray() {
 var values = new Array();
 values.push.apply(values, arguments);
 values.toPipedString = function() {
   return this.join("|");
 };
 return values;
}
var colors = new SpecialArray("red", "blue", "green");
colors.toPipedString(); //"red|blue|green"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: