javascript学习(原型对象)

在javascript中,原型对象我是认为还是比较晦涩难懂的。

在js中我们可以认为js是面对对象的,跟java差不多,本人也是java出身。在js中 对象的理解与java等其他强类型的语言是不一样的,所以会造成很多后端人员学习js这一块会觉得难以理解。但是js这种原型的灵活性也会造成很多的问题,在这里推荐大家看本书《javascript语言精粹》,另外在新的ES6中就引入了class的概念,符合这本书的初衷 对js语言进行"取其精华,去其糟粕".

首先 javascript中,分为值类型与引用类型。引用类型为对象,对象则是属性的集合。

值类型为(undefined, number, string, boolean)这几种,而 函数、数组、对象、null 等等都是对象,所以可以说在js中除了值类型,一切为对象。

判断值类型是typeof,引用类型为instanceof,instanceof 判断是根据原型链来查找判断的。

 

对象和函数的关系

总结来说,对象是函数创建的,函数又是对象。我们来验证一下

其中var a={}等价于var a=new Object()        

通过构造函数创建对象

我们在创建对象时经常通过构造函数来创建对象

可以看出,b好像有了 b.a ,.b.b 属性,我们来判断一下结果 并不是那样.

我们来看一下通过构造函数创建对象时发生了什么:

一共做了四步

var b  ={};

b.__proto__ = a.prototype;

a.call(b);

return b;

还是比较好理解的

第一行,创建一个空对象b。

第二行,将这个空对象的__proto__成员指向了构造函数对象的prototype成员对象,这是最关键的一步。

第三行,将构造函数的作用域赋给新对象。

第四行,返回新对象b。当构造函数里包含返回语句时情况比较特殊, 构造函数可以包含返回语句(不推荐),但返回值必须是this,或者其它非对象类型的值。

上面的第二步涉及到了对象原型链知识点,

当我们创建对象时,上面讲过,对象都是由函数创建。当创建的对象时会默认的将新创建对象的隐式原型__proto__指向函数的prototype

时间: 2024-10-05 21:31:12

javascript学习(原型对象)的相关文章

Javascript学习------FileSystemObjec对象

动态创建FileSystemObject对象: var fso=new FileSystemObject("Scripting.FileSystemObject"); (接下来可以用变量fso对Drive对象.Drives集合.File对象.Files集合.Folder对象.Folders集合以及TextStream对象进行相应的操作.) FileSystemObject对象的方法 ·GetAbsolutePathName()方法:该方法根据提供的路径返回完整的路径. ·GetBase

javascript学习------Number对象,Boolean对象

Math对象: 该对象提供了大量的数学常量和数学函数. 使用Math对象时,不应该使用new关键字创建对象,而应直接使用. 如: Math.PI; 例子:随机产生指定位数的验证码 Number对象的创建: 1. var num = new Number(object); 2. var num = Number(object); Number对象的属性: 1.MAX_VALUE属性 2.MIN_VALUE属性 3.NEGTIVE_INFINITY属性:负无穷大 4.POSITIVE_INFINIT

JavaScript中原型对象的基本概念

在之前我们学习对象的时候,讲到了创建对象的方式,一个是通过构造函数创建一个新的对象,一个是对象字面量的方式创建对象. 讲到对象就必须要认识原型对象的概念了. 1 原型对象的概念 构造函数有一个默认的属性prototype属性,这个属性指向了一个对象,这个对象就是这个构造函数的原型对象了. 同时这个原型对象种有一个constructor属性,这个属性指向的是构造函数本身. 2 原型对象中的功能 原型对象中的属性和方法,可以被实例对象所共享(不同实例对象调用的原型函数中的属性和方法为同一个). 3

JavaScript中原型对象的彻底理解

一.什么是原型 原型是Javascript中的继承的继承,JavaScript的继承就是基于原型的继承. 1.1 函数的原型对象 ? 在JavaScript中,我们创建一个函数A(就是声明一个函数), 那么浏览器就会在内存中创建一个对象B,而且每个函数都默认会有一个属性 prototype 指向了这个对象( 即:prototype的属性的值是这个对象 ).这个对象B就是函数A的原型对象,简称函数的原型.这个原型对象B 默认会有一个属性 constructor 指向了这个函数A ( 意思就是说:c

JavaScript学习-自定义对象/

JavaScript学习 [自定义对象] 1.基本概念 ① 对象概念: 对象是包含一系列无序属性和方法的集合: ② 对象中的数据,是以键值对形式存在的,以键取值: ③ 属性:描述对象特征的一系列变量.[对象中的变量]: ④ 方法:描述对象行为的一系列方法.[对象中的函数]: 2.对象的声明: ① 字面量声明: var ovj={ key1:value1, //属性 key2:value2 func:function(){} //方法 } ② 对象中的键,可以是任何数据类型.但,一般用作普通变量名

JavaScript学习笔记——对象知识点

javascript对象的遍历.内存分布和封装特性 一.javascript对象遍历 1.javascript属性访问 对象.属性 对象[属性] //字符串格式 2.javascript属性遍历 for in 二.内存分布 三.对象的特性之封装 把对象所有的组成部分组合起来,尽可能的隐藏对象的部分细节,使其受到保护. 只保留有限的接口和外部发生联系. 一.工厂函数 二.构造函数 三.prototype方法 四.混合方法

JavaScript 学习笔记 - 对象和继承

本文是JavaScript The Good Part 有关对象和继承的学习笔记. 1. Object.create 本函数是ECMAScript 5中的标准函数,其作用是用一个对象作为原型来生成另一个对象,可以用以下的code 模拟实现. if(typeof Object.create !== 'function') { Object.create = function(proto){ var F = function(){}; if(typeof proto !== 'object'){ /

javascript学习----window对象的学习与总结

一   BOM:浏览器对象模型,提供了很多对象,用于对浏览器的功能进行访问,浏览器本身自己就有一些对象,不需要创建. BOM的核心对象是window,它是浏览器的一个实例. 二.(1)Window:的常用属性: (1)status (2)opener (3)closed 的常用方法: (1)alert(): (2)confirm(): (3)setInterval(): (4)clearInterval(): (5)setTimeout(): (6)clearTimeout(): (7)open

JavaScript学习之对象

JavaScript对象 一.对象简介 JavaScript 是面向对象的编程语言 (OOP).OOP 语言使我们有能力定义自己的对象和变量类型.注意:对象只是一种特殊的数据.对象拥有属性和方法. 1.属性:指与对象有关的值. eg:使用字符串对象的长度属性来计算字符串中的字符数目. 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/

JavaScript学习——BOM对象

1.BOM 对象:浏览器对象模型(操作与浏览器相关的内容) 2.Window 对象 Window 对象表示浏览器中打开的窗口 setInterval():它有一个返回值,主要是提供给 clearInterval 使用 setTimeout():它有一个返回值,主要是提供给 clearTimeout 使用 clearInterval():该方法只能清除由 setInterval 设置的定时操作 clearTimeout():该方法只能清除由 setTimeout 设置的定时操作 弹出框的几个方法: