`
墨香子
  • 浏览: 47198 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Js对象特性总结

阅读更多
一、对象
1.Js中所有东西都是对象(除了原始值)
true, 123, 'abc', undefined, {} //null和数组也是对象


2.可以用点取对象的属性的值或设对象的属性值。
  这个属性就像是对象的指针,而属性是这个指针的名字,名字可以任意取

var obj.abc = "abc";
	var obj['abc'] = "abc";


3.所有对象都有一个隐藏的属性__proto__。
  原型链就根据这个隐藏属性来的,这个属性可以在firefox和chrome调试中看到,正常写js代码时是不会直接使用这个属性的
	var obj.__proto__.abc = "aaa";
	alert(obj.abc);            //obj.abc   ==>  obj.__proto__.abc="aaa"
	

4.在读取对象的某一个属性值的时候,会首先查找对象本身是否有该属性,如果找到则返回对应的值,否则查找这个对象的__proto__是否有该属性。由于__proto__也是一个对象,所以本条规则对__proto__也适用,直到对象的__proto__的值为null,则说明属性不存在,返回undefined,其过程如下:
	function getValue(obj, attribute){
		while(obj != null){
			var value = obj$attribute;//伪代码,找自身对应的属性
			if(value){
				return value;
			}
			obj = obj.__proto__;
		}
		return undefined;
	}


5.只有取属性值的时候才会查找原型链,设置属性值的时候不通过原型链查找。


二、函数
1.函数也是对象,为和普通对象区分,我们叫它函数对象
function func(){}   ==> var func = new Function("");


2.既然函数是对象。那么函数也有对象的性质,也可以用点给函数对象设置属性值或读取值,也有__proto__属性
func.abc = 'abc';


3.函数对象有一个prototype属性,这个属性是函数对象天生就有的,有特殊功能。
  一般情况下,ptototype属性就是一个普通对象,具有前面普通对象的所有特性,其特殊功能继续往后看
func.prototype.abc = 'bbb';



三、创建对象
1.使用函数对象创建普通对象,即new出一个“实例”
function Person(name){
		this.name = name;
	}
	Person.prototype.sayHello = function(){
		alert(this.name + " say: Hello world!");
	}
	var p1 = new Person("Habo");
	p1.sayHello();


2.其实使用new根据构造函数创建一个对象时,等价于下面三步(不考虑构造函数有返回值的情况)
var p2 = {};
	Person.call(p2, "Habo");
	p2.__proto__ = Person.prototype;


3.由上面三步中看出,在用一个构造函数new出一个对象时,会将这个新对象的原型链指针(__proto__)指向构造函数的prototype,这就是prototype的特殊功能了,除了这个功能prototype就是一个普通对象。
  这样的话,所以:
p1.sayHello ==> p1.__proto__.sayHello ==> Person.prototype.sayHello



四、继承
1.js中本没有继承的概念,只不过根据js的一些特性实现具有继承“父类”属性的效果。
function Student(id){
		this.id = id;
	}
	Student.prototype = new Person();



2.实现方式无外乎两种:a.将“父类”的属性挂到“子类”的原型链上 b.将“父类”的属性复制给“子类”
分享到:
评论

相关推荐

    javascript面向对象总结

    以上内容主要源自于“javascript面向对象总结”这篇博文,通过深入学习这些知识点,开发者可以更好地理解和应用JavaScript的面向对象特性,从而编写出更加高效和易于维护的代码。通过`extends.js`和`new.js`这两个...

    JavaScript对象模型

    ### JavaScript对象模型详解 #### 一、概述 在JavaScript中,对象模型是其核心特性之一,它决定了数据的存储方式以及程序的运行机制。本文旨在深入解析JavaScript对象模型的关键概念,包括基本数据类型、对象、...

    JS常用对象及用法属性的总结(全)

    `JSON.parse()`用于将JSON字符串转换为JavaScript对象,`JSON.stringify()`将JavaScript对象转换为JSON字符串。 11. **Map与Set**: - ES6引入的新数据结构,`Map`存储键值对,键可以是任意类型,`Set`存储不重复...

    面向对象JavaScript精要(英文原版pdf)

    尽管JavaScript不是传统意义上的面向对象语言,但它提供了一些独特的特性,使其能够支持面向对象编程。 - **原型链**:JavaScript使用原型链来实现继承。每个对象都有一个内部属性[[Prototype]],指向其原型对象。...

    深入浅出JavaScript对象模型

    ### 深入浅出JavaScript对象模型 #### JavaScript对象的本质 根据ECMA262规范,ECMAScript被定义为一种基于对象的语言而非传统的面向对象语言。这意味着在JavaScript中,对象被视为存储数据的一种大型数组形式,...

    JavaScript中函数对象调用模式总结

    JavaScript中的函数对象调用模式是编程中至关重要的概念,它涉及到函数作为一等公民、作用域、闭包、原型链等多个核心知识点。这篇博客通过深入分析JavaScript中的函数调用模式,帮助开发者更好地理解和掌握这些概念...

    JavaScript对象模型-执行模型

    ### JavaScript对象模型-执行模型详解 #### 一、基本数据类型 JavaScript作为一种广泛使用的脚本语言,在其设计之初便提供了一系列的基本数据类型,这些类型构成了JS语言的基础,并且是理解和运用JS的重要基石。 ...

    js面向对象简单理解

    JavaScript是一种广泛应用于Web开发的动态编程语言,尤其以其强大的面向对象特性而闻名。面向对象编程(Object-Oriented Programming,OOP)是软件开发中的一种重要模式,它通过类和对象来模拟现实世界中的概念,...

    JavaScript — 对象和属性的特性1

    本文将深入探讨JavaScript对象和属性的特性,包括`[[Prototype]]`、`[[Class]]`、`get`和`set`访问器、以及如何通过`Object.getOwnPropertyDescriptor()`、`Object.create()`和`Object.prototype.toString.call()`等...

    JAVASCRIPT 面向对象编程精要

    #### 四、面向对象特性 JavaScript提供了几种面向对象的机制,包括继承和封装。 ##### 4.1 封装 JavaScript中的封装主要通过闭包实现。例如,可以创建一个返回私有属性和方法的对象的函数: ```javascript function...

    JavaScript编程中实现对象封装特性的实例讲解

    JavaScript中的对象封装是面向对象编程的一个关键特性,它允许我们将数据和操作这些数据的方法结合在一起,形成具有独立功能的实体。在JavaScript中,虽然不是一种严格的面向对象语言,但通过原型(prototype)机制...

    javascript对象大全

    "JAVASCRIPT对象属性大全.doc"和"js对象属性方法大总结.doc"可能涵盖了JavaScript对象的属性和方法,包括但不限于原型链(prototype)、原型对象(__proto__)、构造函数(constructor)、以及如何添加和访问对象的...

    Javascript面向对象扩展库(lang.js)

    总结来说,`lang.js`是JavaScript开发者的一个强大工具,它通过提供面向对象的扩展,使得开发者可以在JavaScript中更加方便地实现类的定义和函数重载,提升代码的可维护性和可读性。通过阅读源码和示例,开发者可以...

    在js中创建类和对象

    Prototype是JavaScript中的一个重要特性,允许对象共享属性和方法。我们可以通过设置构造函数的`prototype`属性来添加方法。这样,所有实例都可以访问共享的方法,减少了内存开销。但缺点是如果属性是对象,所有实例...

    21天学js总结

    总结,这个21天的JavaScript教程全面覆盖了从基本语法到高级特性的诸多内容,包括数据结构、浏览器交互、文档操作、表单处理以及XML操作。通过深入学习并实践这些知识点,你将具备开发动态、交互性强的Web应用的能力...

    js中的json对象和字符串之间的转化

    2. **字符串与JSON对象之间的转化**:JavaScript提供了两个内置函数来实现这种转化:`JSON.stringify()`用于将JavaScript对象转换为JSON字符串,`JSON.parse()`用于将JSON字符串转换回JavaScript对象。 **描述中的...

    Javascript面向对象编程

    尽管JavaScript本质上是一种基于原型的语言,但它也支持面向对象编程的一些特性,使得开发者能够编写出结构清晰、易于维护的代码。本文将详细介绍JavaScript中的面向对象编程概念和技术,包括类定义、对象创建、继承...

    JavaScript 对象模型-执行模型

    ### JavaScript对象模型与执行模型详解 #### 一、引言 JavaScript作为一种强大的脚本语言,在Web开发领域占据了举足轻重的地位。其独特的对象模型和执行模型为开发者提供了灵活多变的功能,使得JavaScript能够轻松...

    Javascript 面向对象编程小结

    `JSLogger.js`可能是一个用于日志记录的工具,它可以利用JavaScript的面向对象特性来封装日志功能,提供不同级别的日志输出,如`debug`、`info`、`warn`和`error`。此类工具通常包含类方法,用于设置日志级别、格式...

Global site tag (gtag.js) - Google Analytics