javascript定义对象,js定义对象的方式

JavaScript创建对象的几种模式比较

第一种:Object构造函数创建

创新互联从2013年成立,先为凌河等服务建站,凌河等地企业,进行企业商务咨询服务。为凌河企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

var Person = new Object();

Person.name = 'Nike';

Person.age = 29;

这行代码创建了Object引用类型的一个新实例,然后把实例保存在变量Person中。

第二种:使用对象字面量表示法

var Person = {};//相当于var Person = new Object();

var Person = {

name:'Nike';

age:29;

}

对象字面量是对象定义的一种简写形式,目的在于简化创建包含大量属性的对象的过程。也就是说,第一种和第二种方式创建对象的方法其实都是一样的,只是写法上的区别不同

在介绍第三种的创建方法之前,我们应该要明白为什么还要用别的方法来创建对象,也就是第一种,第二种方法的缺点所在:它们都是用了同一个接口创建很多对象,会产生大量的重复代码,就是如果你有100个对象,那你要输入100次很多相同的代码。那我们有什么方法来避免过多的重复代码呢,就是把创建对象的过程封装在函数体内,通过函数的调用直接生成对象。

第三种:使用工厂模式创建对象

function createPerson(name,age,job){

var o = new Object();

o.name = name;

o.age = age;

o.job = job;

o.sayName = function(){

alert(this.name);

};

return o;

}

var person1 = createPerson('Nike',29,'teacher');

var person2 = createPerson('Arvin',20,'student');

在使用工厂模式创建对象的时候,我们都可以注意到,在createPerson函数中,返回的是一个对象。那么我们就无法判断返回的对象究竟是一个什么样的类型。于是就出现了第四种创建对象的模式。

第四种:使用构造函数创建对象

function Person(name,age,job){

this.name = name;

this.age = age;

this.job = job;

this.sayName = function(){

alert(this.name);

};

}

var person1 = new Person('Nike',29,'teacher');

var person2 = new Person('Arvin',20,'student');

对比工厂模式,我们可以发现以下区别:

1.没有显示地创建对象

2.直接将属性和方法赋给了this对象

3.没有return语句

4.终于可以识别的对象的类型。对于检测对象类型,我们应该使用instanceof操作符,我们来进行自主检测:

alert(person1 instanceof Object);//ture

alert(person1 instanceof Person);//ture

alert(person2 instanceof Object);//ture

alert(person2 instanceof Object);//ture

同时我们也应该明白,按照惯例,构造函数始终要应该以一个大写字母开头,而非构造函数则应该以一个小写字母开头。

那么构造函数确实挺好用的,但是它也有它的缺点:

就是每个方法都要在每个实例上重新创建一遍,方法指的就是我们在对象里面定义的函数。如果方法的数量很多,就会占用很多不必要的内存。于是出现了第五种创建对象的方法

第五种:原型创建对象模式

function Person(){}

Person.prototype.name = 'Nike';

Person.prototype.age = 20;

Person.prototype.jbo = 'teacher';

Person.prototype.sayName = function(){

alert(this.name);

};

var person1 = new Person();

person1.sayName();

使用原型创建对象的方式,可以让所有对象实例共享它所包含的属性和方法。

如果是使用原型创建对象模式,请看下面代码:

function Person(){}

Person.prototype.name = 'Nike';

Person.prototype.age = 20;

Person.prototype.jbo = 'teacher';

Person.prototype.sayName = function(){

alert(this.name);

};

var person1 = new Person();

var person2 = new Person();

person1.name ='Greg';

alert(person1.name); //'Greg' --来自实例

alert(person2.name); //'Nike' --来自原型

当为对象实例添加一个属性时,这个属性就会屏蔽原型对象中保存的同名属性。这时候我们就可以使用构造函数模式与原型模式结合的方式,构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性

第六种:组合使用构造函数模式和原型模式

function Person(name,age,job){

this.name =name;

this.age = age;

this.job = job;

}

Person.prototype = {

constructor:Person,

sayName: function(){

alert(this.name);

};

}

var person1 = new Person('Nike',20,'teacher');

javascript用带参数的构造函数定义一个对象Student

script type="text/javascript"

function Student(id,name,grades){

this.id=id;

this.name=name;

this.grades=grades;

}

Student.prototype.average=function(){

var sum=eval(this.grades.join("+"));

return sum/this.grades.length;

}

//测试

var xiaoming=new Student("00001","Xiaoming",[80,85,90]);

alert("小明的平均成绩是;"+xiaoming.average());

/script

js定义函数对象有几种方式?

在JavaScript中定义对象可以采用以下几种方式:

1.基于已有对象扩充其属性和方法

2.工厂方式

3.构造函数方式

4.原型(“prototype”)方式

5.动态原型方式

-- 1.基于已有对象扩充其属性和方法

object.name = "zhangsan";

object.sayName = function(name)

{

this.name = name;

alert(this.name);

}

object.sayName("lisi");

-- 2.工厂方式 

function createObject() 

{

var object = new Object();

object.username = "zhangsan";

object.password = "123";

object.get = function()

{

alert(this.username + ", " + this.password);

}

return object;

}

var object1 = createObject();

var object2 = createObject();

object1.get();

-- 采用带参数的构造方法:

function createObject(username, password)

{

var object = new Object();

object.username = username;

object.password = password;

object.get = function()

{

alert(this.username + ", " + this.password);

}

return object;

}

var object1 = createObject("zhangsan", "123");

object1.get();

javascript 中自定义对象时使用什么关键字

var obj = {};

var obj;

var obj = new Object();

function obj(){}

由于JavaScript是解释执行的,所以它的语法远不如C语言等严格,如果程序中有错误,浏览器会忽略错误的部分,而不是停止执行。

JavaScript程序是在客户端执行的,它不能操纵服务器中的数据库,所以包含了JavaScript的网页仍是静态网页。

扩展资料:

JavaScript脚本语言不依赖于操作系统,仅需要浏览器的支持。因此一个JavaScript脚本在编写后可以带到任意机器上使用,前提上机器上的浏览器支持JavaScript脚本语言,JavaScript已被大多数的浏览器所支持。

不同于服务器端脚本语言,例如PHP与ASP,JavaScript主要被作为客户端脚本语言在用户的浏览器上运行,不需要服务器的支持。所以在早期程序员比较青睐于JavaScript以减少对服务器的负担,而与此同时也带来另一个问题:安全性。

而随着服务器的强壮,虽然程序员更喜欢运行于服务端的脚本以保证安全,但JavaScript仍然以其跨平台、容易上手等优势大行其道。同时,有些特殊功能(如AJAX)必须依赖JavaScript在客户端进行支持。

参考资料来源:百度百科-JavaScript

JavaScript中的全局对象,内置对象和预定义对象是什么

在javascript中对象是一种基本数据类型,也可以看做是属性的的无序集合。所谓全局对象,你可以简单的理解为window下的对象,它的作用域是是针对整个window,所以全局对象一旦声明,在任何地方都可以调用。

javascript中对象基本分为三类:内置对象、宿主对象、自定义对象

内置对象:是指由ECMAScript规范定义的对象或者类。例如数据、函数、日期等....

宿主对象:是由JavaScript所嵌入的宿主环境定义的,如客户端JavaScript中表示网页机构的HTMLElement对象就是宿主对象

自定义对象:就是在运行中创建的对象。

以上纯手打,望采纳!!!

如何理解Javascript中类和对象这两个概念

首先,对象的定义大致如下:

对象(object)是JavaScript的核心概念,也是最重要的数据类型。JavaScript的所有数据都可以被视为对象。

简单说,所谓对象,就是一种无序的数据集合,由若干个“键值对”(key-value)构成。

var o = {

p: "Hello World"

};

上面代码中,大括号就定义了一个对象,它被赋值给变量o。这个对象内部包含一个键值对(又称为“成员”),p是“键名”(成员的名称),字符串“Hello World”是“键值”(成员的值)。键名与键值之间用冒号分隔。如果对象内部包含多个键值对,每个键值对之间用逗号分隔。

我们从两个层次来理解。

(1)“对象”是单个实物的抽象。

一本书、一辆汽车、一个人都可以是“对象”,一个数据库、一张网页、一个与远程服务器的连接也可以是“对象”。当实物被抽象成“对象”,实物之间的关系就变成了“对象”之间的关系,从而就可以模拟现实情况,针对“对象”进行编程。

(2)“对象”是一个容器,封装了“属性”(property)和“方法”(method)。

所谓“属性”,就是对象的状态;所谓“方法”,就是对象的行为(完成某种任务)。比如,我们可以把动物抽象为animal对象,“属性”记录具体是那一种动物,“方法”表示动物的某种行为(奔跑、捕猎、休息等等)。

其次,典型的面向对象编程语言(比如C++和Java),存在“类”(class)这样一个概念。所谓“类”就是对象的模板,对象就是“类”的实例。JavaScript语言没有“类”,而改用构造函数(constructor)作为对象的模板。

前面说过,“对象”是单个实物的抽象。所以,通常需要一个模板,表示某一类实物的共同特征,然后“对象”根据这个模板生成。

所谓“构造函数”,就是专门用来生成“对象”的函数。它提供模板,作为对象的基本结构。一个构造函数,可以生成多个对象,这些对象都有相同的结构。

类,无非就是想实现代码共用,JS中通过设置原型对象的方式达到了这个目的。只是中间的过程不是使用class的形式,而是使用constructor function的形式。


分享文章:javascript定义对象,js定义对象的方式
文章地址:http://pwwzsj.com/article/dscehch.html