js对象个人理解及记录
什么是对象
对象的定义是:无序属性的集合,其属性可以包括基本值、对象或函数。
var car = {}; //比如我们拿一块铁造了一辆车,这的名字叫car /建一个空对象
car.length = "5m"; //车的长度是5米 /对象的基本值
car.height = "1.4m";//车的高度是1.4米 /对象的基本值
car.chair ={length:"0.5m",height:"1m"}; //车里面有椅子,椅子有高度有长度(椅子也是个对象)/对象里面的对象
car.drive(); //车可以开 /对象的函数(方法)
属性是对象内存在的名称和值。例如 car.length = "5m";
方法是对象能够调用的动作。例如car.drive();
回顾下函数的定义:无序属性的集合,其属性可以包括基本值、对象或函数。
car这个对象里面,有基本值,有对象,有函数。这些东西在car对象里面是无序。
上面的代码和下面的代码运行结果是一样的。(也许更好理解点)
var car = {
length:"5m", //车有长度(基本值)
height:"1.4m", //车有高度(基本值)
chair:{length:"0.5m",height:"1m"}, //车里有椅子(对象)
drive:function (){console.log("car go")} //车可以开(函数或叫方法)
}
对象的创建:
var em = {}; //直接创建
var ob = new Object(); //构造函数方式创建
var cr = Object.create({x:1,y:2});
工厂模式
function createPerson(name,age,sex){
var p = new Object();
p.name = name;
p.age = age;
p.sex = sex;
p.message=function(){
console.log('name:'+this.name+",age:"+this.age+",sex:"+this.sex);
}
return p;
}
var person = createPerson("李四",18,"男");
构造函数模式
function Person(name,age,sex){
this.name = name;
this.age = age;
this.sex = sex;
this.message = function(){
console.log('name:'+this.name+",age:"+this.age+",sex:"+this.sex);
}
}
var person = new Person("李四",18,"男");
原型模式(有缺陷不可单独使用)
function Person(){}
Person.prototype.name = "李四";
Person.prototype.age= 18;
Person.prototype.sex= "man";
Person.prototype.message= function(){
console.log('name:'+this.name+",age:"+this.age+",sex:"+this.sex);
}
var person = new Person();
person.message();
组合使用构造函数模式和原型模式(推荐使用)
function Person(name,age,sex){
this.name = name;
this.age = age;
this.sex = sex;
}
Person.prototype={
constructot:Person,
message:function(){
console.log('name:'+this.name+",age:"+this.age+",sex:"+this.sex);
}
}
var person1 = new Person("李四",18,"男"),
person2 = new Person("王五",19,"男");
动态原型模式(推荐使用)
function Person(name,age,sex){
this.name = name;
this.age = age;
this.sex = sex;
if(typeof this.message !="function"){
Person.prototype.message= function(){
console.log('name:'+this.name+",age:"+this.age+",sex:"+this.sex);
}
}
}
var person = new Person("李四",18,"男");
寄生构造函数模式
function Person(name,age,sex){
var p = new Object();
p.name = name;
p.age = age;
p.sex = sex;
p.message = function(){
console.log('name:'+this.name+",age:"+this.age+",sex:"+this.sex);
}
return p;
}
var person = new Person("李四",18,"男");
稳妥构造函数模式(适合在安全的环境下使用)
function Person(name,age,sex){
var p = new Object();
p.name = name;
p.age = age;
p.sex = sex;
p.message = function(){
console.log('name:'+name+",age:"+age+",sex:"+sex);
}
return p;
}
var person = Person("李四",18,"男");
- 个人对Java中String对象的传递的理解(错误之处,请给与纠正,
- 【记录】这样在网页里构造JS 更加容易理解
- 深入理解js面向对象中的prototype
- js对象的理解(转载)
- js的对象属性的两种访问方式和对象的内存理解
- 个人编程思想理解的片段(主要是面向对象的,参考了许多人的观点,还不成熟,没形成系统,请大家多指点)
- 黑马程序员_java面向对象相关 个人理解
- 分享一段JS代码,个人感觉很使用:网页浏览历史记录
- 浅谈个人对面向对象的程序设计的理解(一)
- javascript类与对象结合理解jsUI框架
- oracle10g- oracle 一个特殊的应用 :复合数据 也叫记录 像一个js临时对象
- 一些个人的对帮助自己更好理解“对象”的一些笔记
- [Java学习笔记] 对象的比较(引用比较、值比较) ^_^个人的理解,请多多关照^_^
- 加深对js对象写法的理解 之第一篇
- js中对json对象和字符串的理解以及相互转化
- 怎么理解js中的 dom 对象
- [学习记录]js处理json的list对象
- 理解JS 对象基础篇
- js 对象理解(1)
- js原型对象理解