JavaScript之Object

两种简单的JavaScript中定义对象的方式:

在JavaScript中,可以动态添加对象的属性,也可以动态删除对象的属性。

1 var object=new object();
2 //alert(object.username);
3 object["username"]="zhangsan";
4 alert(object.username);
5 delete object.username; //username已经从object对象中删除
6 alert(object.username);

在JavaScript中定义对象最常用的方式:

1 var object ={username:"zhangsan",password:123};

JavaScript中定义对象的几种方式(JavaScript中没有类的概念,只有对象):
1) 基于已有对象扩充其属性和方法:

 1 var object = new Object();
 2
 3 object.name = "zhangsan";
 4 object.sayName = function(name)
 5 {
 6     this.name = name;
 7     alert(this.name);
 8 }
 9
10 object.sayName("lisi");

2)工厂方式:

为了使的一个函数对象被多个对象所共享,而不是每一个对象拥有一个函数对象,应该讲对象的成员函数定义在createObject(username, password)之外来调用,而不是将函数放在工厂方法之内。

 1 //使用工厂方法创建对象
 2 function get()
 3 {
 4     alert(this.username + ", " + this.password);
 5 }
 6
 7 function createObject(username, password)
 8 {
 9     var object = new Object();
10
11     object.username = username;
12     object.password = password;
13
14     object.get = get;
15
16     return object;
17 }
18
19 var object = createObject("zhangsan", "123");
20 var object2 = createObject("lisi", "456");
21
22 object.get();
23 object2.get();

3) 构造函数方式:

 1 function Person()
 2 {
 3     //在执行第一行代码前,js引擎会为我们生成一个对象
 4     this.username = "zhangsan";
 5     this.password = "123";
 6
 7     this.getInfo = function()
 8     {
 9         alert(this.username + ", " + this.password);
10     }
11
12     //此处有一个隐藏的return语句,用于将之前生成的对象返回
13 }
14
15 var person = new Person();
16 person.getInfo();

可以在构造对象时传递参数

 1 function Person(username, password)
 2 {
 3     this.username = username;
 4     this.password = password;
 5
 6     this.getInfo = function()
 7     {
 8         alert(this.username + ", " + this.password);
 9     }
10 }
11
12 var person = new Person("zhangsan", "123");
13 person.getInfo();

4)原型(“prototype”)方式:

单纯的使用原型方式来创建对象,那么生成的所有对象会共享原型中的属性,这样一个对象改变了该属性也会反应到其他对象当中。同时,对象无法在构造函数中为属性赋初值,只能在对象生成后再去改变属性值。

 1 function Person()
 2 {
 3
 4 }
 5
 6 Person.prototype.username = new Array();
 7 Person.prototype.password = "123";
 8
 9 Person.prototype.getInfo = function()
10 {
11     alert(this.username + ", " + this.password);
12 }
13
14 var person = new Person();
15 var person2 = new Person();
16
17 person.username.push("zhangsan");
18 person.username.push("lisi");
19 person.password = "456";
20
21 person.getInfo();
22 person2.getInfo();

使用原型+构造函数方式来定义对象则可以解决这些问题:

 1 //使用原型+构造函数方式来定义对象
 2
 3 function Person()
 4 {
 5     this.username = new Array();
 6     this.password = "123";
 7 }
 8
 9 Person.prototype.getInfo = function()
10 {
11     alert(this.username + ", " + this.password);
12 }
13
14 var p = new Person();
15 var p2 = new Person();
16
17 p.username.push("zhangsan");
18 p2.username.push("lisi");
19
20 p.getInfo();
21 p2.getInfo();

5) 动态原型方式:在构造函数中通过标志量让所有对象共享一个方法,而每个对象拥有自己的属性。

 1 function Person()
 2 {
 3     this.username = "zhangsan";
 4     this.password = "123";
 5
 6     if(typeof Person.flag == "undefined")
 7     {
 8         alert("invoked");
 9
10         Person.prototype.getInfo = function()
11         {
12             alert(this.username + ", " + this.password);
13         }
14
15         Person.flag = true;
16     }
17 }
18
19 var p = new Person();
20 var p2 = new Person();
时间: 2024-10-18 09:06:40

JavaScript之Object的相关文章

JavaScript中object和Object有什么区别

JavaScript中object和Object有什么区别,为什么用typeof检测对象,返回object,而用instanceof 必须要接Object呢 -------------------------------------------------------------------- 这个问题和我之前遇到的问题非常相似,我认为这里有两个问题需要解决,一个是运算符new的作用机制,一个是function关键字和Funtion内置对象之间的区别.看了一些前辈的博客和标准,这里帮提问者总结一

JavaScript中Object.prototype.toString方法的原理

在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. ? 1 2 var arr = []; console.log(Object.prototype.toString.call(arr)) //"[object Array]" 本文要讲的就是,toString方法是如何做到这一点的,原理是什么. ECMAScript 3 在ES3中,Object.prototype.toString方法的规范如下:

【JavaScript】Object.observe()带来的数据绑定变革

Object.observe()带来的数据绑定变革 引言 一场变革即将到来.一项Javascript中的新特性将会改变你对于数据绑定的所有认识.它也将改变你所使用的MVC库观察模型中发生的修改以及更新的实现方式.你会看到,那些所有在意属性观察的应用性能将会得到巨大的提升. 我们很高兴的看到,Object.observe()已经正式加入到了Chrome 36 beta版本中. Object.observe()是未来ECMAScript标准之一,它是一个可以异步观察Javascript中对象变化的方

从头开始学JavaScript (十一)——Object类型

原文:从头开始学JavaScript (十一)--Object类型 一.object类型 一个object就是一系列属性的集合,一个属性包含一个名字(属性名)和一个值(属性值). object对于在应用程序中存储和传输数据而言,是非常理想的选择 二.创建object 创建object实例有两种方法: 使用new 操作符后跟object构造函数 使用对象初始化器,也就是对象字面量表示法 2.1使用new 操作符后跟object构造函数创建object实例: 1 var person = new O

javascript的 Object 和 Function

一. javascript 的 内置对象: Object 和 Function javascript所有东西,包括 Function 都是对象 . Array  其实是一个 Function 类型的对象, 它的prototype 是指向了 Function.prototype . new Array()  是一个 Object 对象, 它的 prototype 指向了 Object.prototype . 函数的第一种定义方法: function sum1(a,b){              

javascript:利用Object.create()方法创建对象

在javascript里面,我们知道有两种常见的创建对象的方法,一种是使用对象直接量: 对象直接量是由若干值/键对组成的映射表,值/键对用逗号”,“分隔开,整个部分用花括号”{}“括起来. 例如: var empty={}; var people = { name:'kobe', age:'34' }; 另外一种方法是通过new创建对象:在new后面使用一个函数调用,这个函数也成为构造函数,通过new来初始化一个新的对象. 例如: var arr = new Array(); var date

javascript 的object 对象

object是ECMAscript使用最多的一种类型.使用object实例的方式有两种.一种是用new操作符,另一种是对象字面量方法. 1.new操作符: 1 var person=new Object(); 2 person.name="zhangsan"; 3 person.age=21; 2.对象字面量: 1 var person={ 2 name:"张三", 3 age:29 4 }; 在对象字面量中,对象的属性名可以使用字符串,即也可以写成: 1 var

JavaScript中Object对象

Object对象是提供所有JavaScript对象通用的功能.使用方法: obj = new Object([value]) 其中obj是必选项.要赋值为 Object 对象的变量名.www.82676666.com value是可选项.任意一种 JScript 基本数据类型.(Number.Boolean.或 String.)如果 value 为一个对象,返回不作改动的该对象.如果 value 为 null.undefined,或者没有给出,则产生没有内容的对象. Object 对象被包含在所

【JavaScript】Object.prototype.toString.call()进行类型判断

权声明:本文为博主原创文章,未经博主允许不得转载. [javascript] view plain copy print? op = Object.prototype, ostring = op.toString, ... function isFunction(it) { return ostring.call(it) === '[object Function]'; } function isArray(it) { return ostring.call(it) === '[object A