JavaScript面向对象基础知识

1. 对象

对象是JavaScript的基础。JavaScript的大部分功能都是基于对象的。从最基本的层次而言,对象是一系列属性的集合。

// 创建一个新的Object对象,存放在 'obj' 变量中
var obj = new Object();

// 给这个对象设置一个属性
obj.val = 5;
obj.click = function(){
    alert( "hello" );
};

// 简写方式,键值对(key/value pair)来定义属性
var obj = {
    // 用键值对(key/value pairs)方式来设置属性名和属性值
    val: 5,
    click: function(){
        alert( "hello" );
    }
};

2. 对象的创建

和大部分的其它面向对象的语言不同,JavaScript并没有类(class)的概念。其它面向对象语言大多需要实例化某个具体的类。但JavaScript不同,JavaScript里对象本身可以用来创建新对象,而对象也可以继承自其它对象。这个概念称为原型化继承(prototypal inheritance)。
不管JavaScript使用何种对象方案,首先还是应该有一个创建新对象的方法。JavaScript的做法是,任何函数都可以被实例化为一个对象。

// 一个简单的函数,接受名称并将其存入当前上下文中
function User( name ) {
    this.name = name;
}

// 指定名称来创建该函数的一个新对象
var me = new User( "My Name" );

// 设置了它的name属性
alert( me.name == "My Name" );

// User对象的一个实例
alert( me.constructor == User );

// 既然User只是个函数,如果只把它作为函数来使用它呢?
User( "Test" );

// this指向默认的全局 window 对象
alert( window.name == "Test" );
constructor 属性在每个对象中都存在,并一直指向创建它的函数。这样就可以有效地复制对象,用同一个基类创建对象并赋予不同的属性。

// 创建一个新的简单的User对象
function User() {}

// 创建一个User对象
var me = new User();

// 用前一个对象的 constructor 引用来创建对象
var you = new me.constructor();

// 这两个对象的 constructor 实质上是一致的
alert( me.constructor == you.constructor );

3.公共方法(public method)在对象的上下文中是最终用户始终可以接触到的。要实现这种在对象的每个实例都可以使用的公共方法。必须了解 prototype(原型)的属性,这个属性包含一个对象,该对象可以作为所有新副本的基引用(base reference)。本质上说,所有对象原型的属性都能在该对象的每个实例中找到。
因为对象的原型仍然是对象,和其他任何对象一样,可以给它添加新的属性。给原型添加属性的结果是由该原型实例化的每个对象都会获得这些属性,也就使这些属性公有化了。

// 创建一个新的User构造函数
function User( name, age ){
    this.name = name;
    this.age = age;
}

// 将一个新函数加到对象的 prototype 对象中
User.prototype.getName = function(){
    return this.name;
};

// 再次给 prototype 对象添加一个函数
User.prototype.getAge = function(){
    return this.age;
};

// 实例化一个新的User对象
var user = new User( "Bob", 44 );

// 添加的这两个属性都在刚才创建的对象中,并且有合适的上下文
alert( user.getName() == "Bob" );
alert( user.getAge() == 44 );

4. 私有方法

私有方法(private method)和私有变量只允许其他的私有方法、私有变量和特权方法访问。这种方法可以定义一些只让对象内部访问,而外部访问不到的代码。

// 表示教室的一个对象构造函数
function Classroom( students, teacher ) {
    // 用于显示班级所有学生的私有方法
    function disp() {
        alert( this.names.join(", ") );
    }

    // 将班级数据存入公共属性中
    this.students = students;
    this.teacher = teacher;

    // 调用私有方法来显示错误
    disp();
}

// 创建一个新的 classroom 对象
var class = new Classroom( [ "John", "Bob" ], "Mr. Smith" );

// 调用 disp 方法会失败,因为它不是该对象的公共方法
class.disp();

时间: 2024-10-27 02:34:06

JavaScript面向对象基础知识的相关文章

Javascript MD4_基础知识

From:http://pajhome.org.uk/crypt/md5/md4src.html /* * A JavaScript implementation of the RSA Data Security, Inc. MD4 Message * Digest Algorithm, as defined in RFC 1320. * Version 2.1 Copyright (C) Jerrad Pierce, Paul Johnston 1999 - 2002. * Other con

javascript正则表达式基础知识入门

  很长时间没看正则表达式了,碰巧今天用到,温故知新了一把,这里记录下来,分享给大家,都是些基础的知识,重点给大家讲解的是正则表达式中4种常用的方法,50% 的举一反三练习中的原创. 正则表达式的好处到底在哪里呢,下面我们先进行个了解: 我们用js中处理字符串的方法,写出取出字符串中数字的函数: ? 1 2 3 4 5 6 7 8 9 10 11 var str='dgh6a567sdo23ujaloo932'; function getNumber(obj){ var arr=[]; for

javascript正则表达式基础知识入门_javascript技巧

正则表达式的好处到底在哪里呢,下面我们先进行个了解: 我们用js中处理字符串的方法,写出取出字符串中数字的函数: var str='dgh6a567sdo23ujaloo932'; function getNumber(obj){ var arr=[]; for (var i = 0; i < obj.length; i++) { if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){ arr.push(obj.charAt(i)); }

JavaScript 入门基础知识 想学习js的朋友可以参考下_基础知识

stringObject.charAt(index)方法:返回指定索引位置处的字符. stringObject.slice(start,[end])和stringObject.substring(start,[end])方法都接受两个参数,分别为子字符串的起始位置和终止位置,返回这两者之间的字符串,不包括终止位置的那个字符串.如果不指定第二个参数,则默认为字符串的长度,即从起始位置到字符串的末尾. [区别]这两个方法的区别主要是对于负数的处理不同.负数参数对于slice()而言是从字符串的末尾往

JavaScript Distilled 基础知识与函数_javascript技巧

一.运算符 复制代码 代码如下: . [] () 属性存取及函数调用 delete new typeof + - ! 一元运算符 * / % 乘法,除法,取模 + - 加法/连接,减法 >= <= > < 不等式运算符 === !== 等式运算符 && 逻辑与 || 逻辑或 ?: 三元运算符 二.语句: 1.if语句 复制代码 代码如下: var dayOfWeek=0; if(day===6){ } else if(dayOfWeek===0){ } else{

JavaScript 变量基础知识_基础知识

1.区分大小写     <script language='javascript'>     var name="zhang";     var Name="ZHANG";     document.writeln(Name+"<br/>");     document.write(name);     </script>     2.弱类型变量     全部的变量都用var关键字标示,JavaScript解释

php面向对象全攻略 (一) 面向对象基础知识_php基础

1.面向对象的概念 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构,OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成,OOP 达到了软件工程的三个目标:重用性.灵活性和扩展性.为了实现整体运算,每个对象都能够接收信息.处理数据和向其它对象发送信息.面向对象一直是软件开发领域内比较热门的话题,首先,面向对象符合人类看待事物的一般规律.其次,采用面向对象方法可以使系统各部分各司其职.各尽所能.为编程

JavaScript的面向对象编程基础_基础知识

重新认识面向对象为了说明 JavaScript 是一门彻底的面向对象的语言,首先有必要从面向对象的概念着手 , 探讨一下面向对象中的几个概念: 一切事物皆对象 对象具有封装和继承特性 对象与对象之间使用消息通信,各自存在信息隐藏 以这三点做为依据,C++ 是半面向对象半面向过程语言,因为,虽然他实现了类的封装.继承和多态,但存在非对象性质的全局函数和变量.Java.C# 是完全的面向对象语言,它们通过类的形式组织函数和变量,使之不能脱离对象存在.但这里函数本身是一个过程,只是依附在某个类上. 然

Javascript核心读书有感之语言核心_基础知识

读此书之前,感谢淘宝技术团队对此javascript核心的翻译,感谢弗拉纳根写出此书.感谢你们无私的分享,仅以此笔记献给你们的辛勤付出. 一:javascript语言核心 本章之后,我们将主要关注javascript的基础知识.第二章我们讲解javascript的注释,分号和unicode字符集:第三章会更有意思,主要讲解javascript的变量和赋值 这里有一些实例代码说明前两章的重点内容. 复制代码 代码如下: <script type="text/javascript"&