创建空对象:
var o = new Object();
o.a = "A";
o.b = "B";
o.c = "C";
alert(o.a + o.b + o.c);
ABC
|
对象直接量:
var o1 = {a:1, b:2, c:3};
alert(o1.a + o1.b + o1.c);
6
|
嵌套的对象:
var o = new Object();
o.a = "A";
o.b = "B";
o.c = "C"; o.d = {x:1, y:2, z:3};
alert(o.a + o.b + o.c + o.d.x + o.d.y + o.d.z
);
ABC123
|
未定义的对象属性:
var o = new Object();
o.a = "A";
o.b = "B";
o.c = "C";
o.d = {x:1, y:2, z:3};
o.a = o.no_such_property;
delete
o.b;
o.c =
null;
o.d.x =
void 0;
alert(o.a + ',' + o.b + ',' + o.c + ',' + o.d.x + ',' + o.d.y + o.d.z);
undefined,undefined,null,undefined,23
|
枚举对象中的属性名:
var o = new Object();
o.a = "A";
o.b = "B";
o.c = "C";
o.d = {x:1, y:2, z:3};
var s = ""; for (i in o)
{
s += i + ",";
}
alert(s);
a,b,c,d,
|
构造函数:
function init()
{
function Book(name, author)
{
this.name = name;
this.author = author;
}
var book1 = new Book('The Republic', 'Plato');
var book2 = new Book('A History of Western Philosophy', 'Russel');
alert("<" + book1.name + ">(" + book1.author + ")");
alert("<" + book2.name + ">(" + book2.author + ")");
}
<The Republic>(Plato)
<A History of Western Philosophy>(Russel)
|
将方法赋给对象:(必须分别赋给创建的每一个对象)
function Book(name, author)
{
this.name = name;
this.author = author;
}
function toString()
{
return "<" + this.name + ">(" + this.author + ")";
}
var book1 = new Book('The Republic', 'Plato'); book1.toString = toString;
var book2 = new Book('A History of Western Philosophy', 'Russel'); book2.toString = toString;
alert(book1.toString());
alert(book2.toString());
<The Republic>(Plato)
<A History of Western Philosophy>(Russel)
|
将方法的赋值放在构造函数里:
function Book(name, author)
{
this.name = name;
this.author = author;
this.toString = toString;
}
function toString()
{
return "<" + this.name + ">(" + this.author + ")";
}
var book1 = new Book('The Republic', 'Plato');
var book2 = new Book('A History of Western Philosophy', 'Russel');
alert(book1.toString());
alert(book2.toString
);
<The Republic>(Plato)
function toString()
{
return "<" + this.name + ">(" + this.author + ")";
}
|
prototype原型:
function init()
{
function Book(title, author)
{
this.title = title;
this.author = author;
}
function toString()
{
return this.title + "," + this.author + "," + this.subject;
} Book.prototype
.subject = "Philosophy";
Book.prototype.toString
= toString;
var book = new Book("Republic", "Plato");
document.write(book.toString() + "<br>");
for (i = 1;i <= 5; i++)
{
book = new Book("T" + i, "A" + i)
if (i % 2 == 0) Book.prototype.subject = "Maths";
else Book.prototype.subject = "Chemistry";
document.write(book.toString() + "<br>");
}
}
Republic,Plato,Philosophy
T1,A1,Chemistry
T2,A2,Maths
T3,A3,Chemistry
T4,A4,Maths
T5,A5,Chemistry
|
即使属性是在对象被创建以后才添加到它的原型对象中的,对象也能够继承这些属性:
function init()
{
function Book(title, author)
{
this.title = title;
this.author = author;
}
function toString()
{
var v = ""; for (s in this)
{
v+= s + ",";
}
return v;
}
Book.prototype.toString = toString;
var book = new Book("Republic", "Plato");
document.write(book.toString() + "<br>"); Book.prototype.subject = "Philosophy";
document.write(book.toString() + "<br>");
}
title,author,
subject,title,author,
|
关于prototype,一个奇怪的问题:
function Book(title, author)
{
this.title = title;
this.author = author;
}
function getFields(O)
{
var v = "";
for (s in O)
{
v+= s + "=" + O[s] + ",";
}
return v;
}
var A = new Book("Ta", "Aa");
var B = new Book("Tb", "Ab");
document.write("--------------------------<br>");
document.write(getFields(A) + "<br>");
document.write(getFields(B) + "<br>");
B.pages = 508;
B.price = "$20.50";
document.write("--------------------------<br>");
document.write(getFields(A) + "<br>");
document.write(getFields(B) + "<br>");
Book.prototype = B;
document.write("--------------------------<br>");
document.write(getFields(A) + "<br>");
document.write(getFields(B) + "<br>");
document.write("--------------------------<br>"); document.write(getFields(Book.prototype) + "<br>");
var C = new Book("Tc", "Ac");
document.write("--------------------------<br>"); document.write(getFields(C) + "<br>");
--------------------------
title=Ta,author=Aa,
title=Tb,author=Ab,
--------------------------
title=Ta,author=Aa,
title=Tb,author=Ab,pages=508,price=$20.50,
-------------------------- title=Ta,author=Aa,
//在“Book.prototype=B”执行以后,对象A并没有获得B中的两个新属性。奇怪。新创建的对象C却获得了。
title=Tb,author=Ab,pages=508,price=$20.50,
--------------------------
title=Tb,author=Ab,pages=508,price=$20.50,
--------------------------
price=$20.50,pages=508,title=Tc,author=Ac,
|
面向对象的JavaScript:
function Book(title, author)
{
this.title = title;
//实例变量
this.author = author;
}
Book.prototype.toString = function()//实例方法
{
var a = "Book[";
for (s in this)
{
a += s + "=" + this[s] + ";";
}
a += "]";
return a;
}
Book.toString = function(book)//静态方法
{
var a = "Book[";
for (s in book)
{
a += s + "=" + book[s] + ";";
}
a += "]";
return a;
}
var A = new Book("Ta", "Aa");
Book.KIND = "book";//静态变量
document.write(A.KIND + ";" + Book.KIND + "<br>");
document.write(A.toString() + "<br>");
document.write(Book.toString(A) + "<br>");
undefined;book
Book[title=Ta;author=Aa;]
Book[title=Ta;author=Aa;]
undefined;book
Book[title=Ta;author=Aa;]
Book[title=Ta;author=Aa;]
|
分享到:
相关推荐
在这份“Javascript Object 对象学习笔记”中,将深入探讨JavaScript对象的基础知识、属性和方法。首先,我们需要明白什么是对象。在JavaScript中,对象是一种复合数据类型,它将许多值(原始值或其他对象)聚合在...
JavaScript中的Object对象是语言的核心组成部分,它提供了对对象进行操作的各种功能。在JavaScript中,一切皆为对象,包括基本数据类型,它们都有对应的包装对象。本文将深入探讨Object对象的使用和相关方法。 首先...
JavaScript Object Browser扩展是一种针对开发人员的实用工具,它专门设计用于可视化和探索JavaScript对象的结构。这个扩展在浏览器环境中提供了一个交互式的界面,允许开发者深入理解代码中的对象、属性和方法,...
JavaScript是Web开发中不可或缺的一部分,它是一种轻量级的、解释型的编程语言,主要用于增强网页的交互性。本参考手册聚焦于...查阅手册时,结合书签和对象名列表,可以快速定位和学习特定对象的方法和属性。
JavaScript是一种基于原型和函数式...理解这些概念对于深入学习JavaScript和开发复杂的JavaScript应用至关重要。在实际编程中,应根据需求选择合适的方法创建对象和实现继承,以优化性能并保持代码的可读性和维护性。
本教程将带领大家深入了解JavaScript中的Object对象,包括其基本概念、方法、属性模型等,是JavaScript入门学习的基础知识。 首先,Object对象在JavaScript中是所有对象的基类,所有的JavaScript对象都是基于Object...
3. 构造函数与原型:JavaScript提供构造函数(如Object、Array等)来创建特定类型的对象,并通过原型链实现对象之间的继承。 4. 原始包装类型:JavaScript有三种原始包装类型(Boolean、Number、String),它们提供...
面向对象编程(Object-Oriented Programming,OOP)是JavaScript中的一个重要概念,它允许开发者通过对象来组织代码,提高可读性和可维护性。本指南的第二版深入探讨了JavaScript的面向对象特性,旨在帮助开发者更好...
《Object_Oriented_Javascript》这本书详细介绍了如何在JavaScript中实现面向对象编程。 #### 面向对象编程基础 面向对象编程(OOP)主要基于四大核心概念:**封装**、**继承**、**多态**以及**抽象**。这些概念...
JavaScript对象是编程语言的核心组成部分,尤其在Web开发中扮演着至关重要的角色。"JavaScript对象参考手册"涵盖了这一...通过深入学习,你将能够更好地理解和应用JavaScript对象,从而提升你的编程技能和项目质量。
学习JavaScript面向对象编程,不仅有助于理解代码的结构和复用性,还有助于提高编程效率和代码质量。通过阅读和实践这些案例,你可以逐步掌握如何创建、继承和操作JavaScript对象,从而成为一名更出色的JavaScript...
### JavaScript面向对象精要 #### 一、概述 ...通过学习本书,开发者能够更好地理解JavaScript的底层工作原理,掌握高效的编码技巧,并能灵活运用面向对象的设计原则来构建可维护性强的应用程序。
通过对封装、继承、多态等概念的学习和实践,开发者可以更好地理解和掌握面向对象编程的思想,提高编程效率和代码质量。此外,本书还涉及了许多实际案例和最佳实践,对于想要深入了解JavaScript面向对象编程的开发者...
### Object-Oriented JavaScript #### 知识点一:面向对象编程在JavaScript中的应用 - **定义**:面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它将程序设计围绕“对象”进行组织。在...
在JavaScript中,数组和对象是两种非常基础且重要的数据结构,它们被广泛应用于各种场景,如数据存储、逻辑处理和对象表示。这篇文章将深入探讨这两种数据类型,以及相关的操作和工具。 **一、数组** 数组在...
然而,在深入学习JavaScript的过程中,不少开发者对于语言内部的一些概念仍感困惑,比如Object与Function之间的关系及其如何影响`instanceof`运算符的结果。 #### 二、JavaScript对象体系结构概述 在JavaScript...
原型链是JavaScript实现继承的一种方式,通过__proto__属性或Object.getPrototypeOf方法可以访问对象的原型。 3. **作用域与闭包**:作用域决定了变量在哪些代码块中可被访问,有全局作用域和局部作用域。闭包是一...