javascript——对象的概念——创建对象

一、创建对象

1、创建空对象

方式一:

var o ={};o;  //Object {}

typeof(o);  //"object"

方式二:

var o=new Object();o;//Object {}

typeof(o);//"object"

2、创建非空对象

在 javascript 中创建对象有两种方式:对象文本标记法、构造器函数定义对象;

方式一:对象文本标记法:

先上例子:

  

 1     var hero= {
 2                  name:‘小明‘,
 3                  Sex:‘男‘,
 4                  say: function(){ return this.name+‘: 您好!‘;}
 5     };
 6     hero.name;    //"小明"
 7     hero.Sex;       //男"
 8     hero.say();     //"小明: 您好!"
 9     hero[‘name‘];    //"小明"
10     hero[‘Sex‘];       //男"
11     hero[‘say‘]();     //"小明: 您好!"
12     var a=‘name‘;  hero[a];    //"小明"

创建对象——文本标记法

采用文本对象标记法定义对象要注意以下问题:

  • 定义一个对象时要用{},但与函数不同的是无关键字 function;
  • 对象内部格式:  属性名:属性值,不同属性值之间用 “,” 隔开;
  • 对象内部 this 表示当前对象;
  • 调用对象的方法和属性有两种方式如下:hero.name; 和 hero[‘name‘]; 后一种类似于数组的方式可以采用动态方式

方式二:构造器函数法:

例子:

 1     function people(name)
 2     {
 3           this.name=name;
 4           this.sex=‘男‘;
 5           this.say=function(){return this.name+‘: 您好!‘;};
 6     }
 7     var hero=new people(‘小强‘);
 8     hero.name;    //"小强"
 9     hero.sex;    //"男"
10     hero.say();    //"小强: 您好!"
11     hero[‘name‘];    //"小强"
12     hero[‘sex‘];    //"男"
13     hero[‘say‘]();    //"小强: 您好!"
14     var a=‘sex‘; hero[a];    //"男"    

创建对象——构造器函数法

采用文本对象标记法定义对象要注意以下问题:

  • 构造器函数与函数类似:都有function,但构造器均有 this 指向当前对象,否则无法调用;

文本对象法与构造器函数法的不同点:

文本对象法 构造器函数法
直接创建对象,无需实例化 创建的只是一个用于创建对象的构造器函数,必须用构造器函数法实例化对象
只能创建一个 可以实例化多个对象;利用构造器函数的参数可以创建内容不一样的对象

二、对象废除

  对于javascript 语言,其拥有无用存储单元收集程序,意味着我们可以不必专门销毁对象来释放内存。如果再没有对对象的引用时,当运行无用存储单元收集程序时,即可销毁所有的对象。但作为一个良好的习惯,把对象的所有引用都设置为 null,可以强制性地废除对象。例如:hero=null;当对象变量 hero 设置为 null 后,对第一个创建的对象的引用就不存在了。这意味着下次运行无用存储单元收集程序时,该对象将被销毁。

注意:废除对象的所有引用时要当心。如果一个对象有两个或更多引用,则要正确废除该对象,必须将其所有引用都设置为 null。

早绑定和晚绑定

所谓绑定(binding),即把对象的接口与对象实例结合在一起的方法。

早绑定(early binding)是指在实例化对象之前定义它的属性和方法,这样编译器或解释程序就能够提前转换机器代码。在 Java 和 Visual Basic 这样的语言中,有了早绑定,就可以在开发环境中使用 IntelliSense(即给开发者提供对象中属性和方法列表的功能)。ECMAScript 不是强类型语言,所以不支持早绑定。

晚绑定(late binding)指的是编译器或解释程序在运行前,不知道对象的类型。使用晚绑定,无需检查对象的类型,只需检查对象是否支持属性和方法即可。ECMAScript 中的所有变量都采用晚绑定方法。这样就允许执行大量的对象操作,而无任何惩罚。

极晚绑定(Very Late Binding)

从技术上讲,根本不存在极晚绑定。本书采用该术语描述 ECMAScript 中的一种现象,即能够在对象实例化后再定义它的方法。例如:

var o = new Object();
Object.prototype.sayHi = function () {
  alert("hi");
};
o.sayHi();

在大多数程序设计语言中,必须在实例化对象之前定义对象的方法。这里,方法 sayHi() 是在创建 Object 类的一个实例之后来添加进来的。在传统语言中不仅没听说过这种操作,也没听说过该方法还会自动赋予 Object 对象的实例并能立即使用(接下来的一行)。

注意:不建议使用极晚绑定方法,因为很难对其跟踪和记录。不过,还是应该了解这种可能。

时间: 2024-10-24 23:04:47

javascript——对象的概念——创建对象的相关文章

javascript——对象的概念——内建对象

包括内建对象的所有对象都是Object对象的子对象. 1.Array():构建数组的内建构造器函数 例:创建数组方式有两种: 2.Boolean:是对象,与基本数据类型 布尔值 不相同 例:创建Boolean对象. 上例中 a 是对象而不是布尔值.可以通过valueOf()获取其布尔值.通常 Boolean 对象不会用于创建对象,而是利用该对象强制转换数据类型. 在强制转换时,以下内容将被转换为 false:空字符串'';null;undefined;数字0;NaN;false; 例: 即:Bo

javascript——对象的概念——函数 1 (函数对象的属性和方法)

一.函数相关的属性: 1.arguments:访问函数的输入参数,由脚本解释器自动创建,具有length属性,可以用序号访问每个参数. 2.callee:arguments的属性,表正在执行的函数对象. 3.calleer:函数对象的属性,表函数对象的父函数对象.

javascript——对象的概念——函数 3 (使用技巧)

1.回调函数:将函数A传给函数B,由函数B来执行A,则称A为回调函数. 例1:

javascript笔记3-面向对象的程序设计-创建对象

javascript的对象:无序属性的集合,而每个属性可以包含基本值.对象或者函数.举例: 1 var person = new Object(); 2 person.name = "Nicholas"; 3 person.age = 29; 4 person.job = "Software Engineer"; 5 person.sayName = function(){ 6 alert(this.name); 7 }; 8 9 person.sayName();

JavaScript对象 创建对象 继承

创建对象  --以下内容来自JavaScript高级程序设计 工厂模式 用函数来封装以特定接口创建对象的细节. 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("Nichola

JavaScript对象 创建对象(二)

组合使用构造函数和原型模式创建对象 function Person(name, age, job){ this.name = name; this.age = age; this.job = job; this.friends = ["Shelby", "Court"]; } Person.prototype = { constructor: Person, sayName : function () { alert(this.name); } }; var per

深入JavaScript对象创建的细节

最近深入学习javascript后,有个体会:面向对象的方式编程才是高效灵活的编程,也是现在唯一可以让代码更加健壮的编程方式.如果我们抛开那些玄乎的抽象出类等等思想,我自己对面向对象的从写程序的角度理解就是:复用和封装.复用具体就是让你尽量少写重复代码,封装就是将一些耦合度很高的逻辑放到一个程序块里,而且尽量让里面内容不受外界影响.最后的结论是:优秀的javascript代码都是面向对象的.定州市科技工业局 如何构建javascript对象?ECMA-262对对象的定义是:无序属性的集合,其属性

深入学习JavaScript对象

JavaScript中,除了五种原始类型(即数字,字符串,布尔值,null,undefined)之外的都是对象了,所以,不把对象学明白怎么继续往下学习呢? 一.概述 对象是一种复合值,它将很多值(原始值或其他对象)聚合在一起,可通过属性名访问这些值.而属性名可以是包含空字符串在内的任意字符串.JavaScript对象也可以称作一种数据结构,正如我们经常听说的“散列(hash)”.“散列表(hashtable)”.“字典(dictionary)”.“关联数组(associative array)”

创建JavaScript对象的方法

方法一:object类型方法 var  person = new Object(); person.name="alisa"; person.age="16"; person.sex="female"; person.sayname = function(){ return this.name; } 方法二:对象字面量方法 var person={ name:"alisa", age:16, sex:"female&