JavaScript基础之原型对象和原型链】的更多相关文章

原型对象 原型对象简单来说就是函数的原型所指向的对象.前面说原型的时候,说了Object.prototype所指对象就是Object(函数)的原型对象.在每个函数的原型对象中,默认会有constructor属性,用于指向函数本身. 在最开始的时候,原型对象的constructor设计主要是为了获取对象的构造函数.后来发现constructor属性易变,不可信.推荐使用instanceof. 原型对象有什么作用,主要实现对象的继承. 例如我们常用的对象.数组.函数都是得益于原型. 当我们使用变量直…
在javascript中,当系统加载构造函授后 ,会自动在内存中增加一个对象,这个对象就是原型对象.构造函数和原型对象在内存中表现为相互独立,但两者之间还存在联系,构造函数的prototype是原型对象,而原型对象的constructor是构造函数. 创建对象的方法 字面量.构造函数.Object.create <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&q…
最近从网上看到别人详细得讲解了js的原型对象和原型链,看完感觉是看得最清晰的一个,于是,摘录到自己博客里 对于新人来说,JavaScript的原型是一个很让人头疼的事情,一来prototype容易与__proto__混淆,二来它们之间的各种指向实在有些复杂,其实市面上已经有非常多的文章在尝试说清楚,有一张所谓很经典的图,上面画了各种线条,一会连接这个一会连接那个,说实话我自己看得就非常头晕,更谈不上完全理解了.所以我自己也想尝试一下,看看能不能把原型中的重要知识点拆分出来,用最简单的图表形式说清…
1概述 ES6, 全称 ECMAScript 6.0 ,2015.06 发版.在ES6之前,对象不是基于类创建的,而是用一种称为构造函数的特殊函数来定义对象和它们的特征. 2构造函数 构造函数是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与 new 一起使用.我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面. // 利用构造函数创建对象 function Person(uname, age) { this.uname = uname; this.age…
原型对象,原型链这些知识属于基础类知识.但是平时开发过程中也很少用到. 看网上的意思,原型链用于es5开发场景下的继承.es6有了类语法糖之后,就自带继承了. 通过理解,个人画了一张原型链解构的关系图: 可以看出: 从构造函数F开始 new 构造函数F就是实例对象f(var f=new F()) 构造函数F.prototype就是F的原型对象(F.prototype==F原型对象) F原型对象.constructor就是构造函数F(F.prototype.constructor==F) F原型对…
前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 先梳理一下定义: 我们通常认为 object 是普通对象,function 是函数对象: Function 跟 Object 本身是 javascript 自带的函数对象: 每一个函数对象都有一个显示的 prototype 属性,它代表了对象的原型(Function.prototype 函数对象是个例外,没有 prototype 属性): 所有对象(普通对象 和 函数对象)都有一个名为 __proto_…
 扩展javascript扩展(类,对象,原型)…
1. 类 ES6 中新增加了类的概念,可以使用 class 关键字声明一个类,之后用这个类来实例化对象.即类的用途:实例化对象. // 创建一个Person类 class Person { } // 创建一个Person类的实例对象 const p1 = new Person() console.log(p1) 打印结果如下: 注意,输出的p1是一个实例对象,而不是类!这里的输出结果有 Person,是为了说明这个实例对象是由谁new出来的,蓝框表示输出的确实是一个实例对象. 思考:为什么前面要…
对于新人来说,JavaScript的原型是一个很让人头疼的事情,一来prototype容易与__proto__混淆,二来它们之间的各种指向实在有些复杂,其实市面上已经有非常多的文章在尝试说清楚,有一张所谓很经典的图,上面画了各种线条,一会连接这个一会连接那个,说实话我自己看得就非常头晕,更谈不上完全理解了.所以我自己也想尝试一下,看看能不能把原型中的重要知识点拆分出来,用最简单的图表形式说清楚. 我们知道原型是一个对象,其他对象可以通过它实现属性继承.但是尼玛除了prototype,又有一个__…
摘自:https://www.cnblogs.com/shuiyi/p/5305435.html 对于新人来说,JavaScript的原型是一个很让人头疼的事情,一来prototype容易与__proto__混淆,二来它们之间的各种指向实在有些复杂,其实市面上已经有非常多的文章在尝试说清楚,有一张所谓很经典的图,上面画了各种线条,一会连接这个一会连接那个,说实话我自己看得就非常头晕,更谈不上完全理解了.所以我自己也想尝试一下,看看能不能把原型中的重要知识点拆分出来,用最简单的图表形式说清楚. 我…
原创发布 by @一像素 2015.12 在Javascript中,万物皆对象,但对象也有区别,大致可以分为两类,即:普通对象Object 和 函数对象Function. 一般而言,通过new Function产生的对象是函数对象,其他对象都是普通对象. function f1(){ //todo } var f2 = function(){ //todo }; var f3 = new Function('x','console.log(x)'); var o1 = {}; var o2 =…
在Javascript中,万物皆对象,但对象也有区别,大致可以分为两类,即:普通对象(Object)和函数对象(Function). 一般而言,通过new Function产生的对象是函数对象,其他对象都是普通对象. 举例说明: function f1(){ //todo } var f2 = function(){ //todo }; var f3 = new Function('x','console.log(x)'); var o1 = {}; var o2 = new Object();…
目录 理解原型 理解原型对象 实例属性与原型属性的关系 更简单的原型语法 原型的动态性 原型链 理解原型 我们创建的每一个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法.看如下例子: function Person(){ } Person.prototype.name = 'ccc' Person.prototype.age = 18 Person.prototype.sayName = functio…
Javascript中的数据值有两大类:基本类型的数据值和引用类型的数据值. 基本类型的数据值有5种:null.undefined.number.boolean和string. 引用类型的数据值往大的说就1种,即Object类型.往细的说有:Object类型.Array类型.Date类型.Regexp类型.Function类型等. 当原型对象的属性值为基本类型的数据值时,通过实例对象修改属性值从而引起原型对象的属性值发生变化的情况不会发生.当原型对象的属性值为引用类型的数据值时,通过实例对象修改…
我们知道原型是一个对象,其他对象可以用它实现属性继承,除了prototype,又有__proto__ 1. prototype和__proto__的区别 prototype是函数才有的属性                                     __proto__是每个对象都有的属性 但是__proto__不是一个规范的属性,只是部分浏览器 实现了此属性,对应标准的属性是[[Prototype]] 2. __proto__属性指向谁? __proto__的指向取决于对象创建时的实…
以CSS为例,有一种为所有class为"xxxx"的元素添加样式(外联样式),那么所有class为xxx的元素样式就会改变,在css中像下面这么写: <html> <head> <style> .active{ background:red } </style> </head> <body> <p class="active">123456789</p> <p cl…
js面向(基于)对象编程1.澄清概念 1.1 js中基于对象 == js 面向对象 1.2 js中没有类class,但是它取了一个新的名字,交原型对象,因此 类 = 原型对象. 2.为什么需要对象? //这里是一个Cat类 function Cat(){ } Cat(); //函数 function Cat(){}2 var cat1 =new Cat(); //类 3 //这时cat1就是一个对象(实例) 4 cat1.name = "小白"; 5 cat1.age =3; 6 ca…
看到这篇文章写的很好,转过来以便今后阅读. 原文地址:http://www.cnblogs.com/shuiyi/p/5305435.html 对于新人来说,JavaScript的原型是一个很让人头疼的事情,一来prototype容易与__proto__混淆,二来它们之间的各种指向实在有些复杂,其实市面上已经有非常多的文章在尝试说清楚,有一张所谓很经典的图,上面画了各种线条,一会连接这个一会连接那个,说实话我自己看得就非常头晕,更谈不上完全理解了.所以我自己也想尝试一下,看看能不能把原型中的重要…
17.对象 属性:描述对象的信息  方法:描述对象的行为  封装:只关心输入和输出(不管过程如何实现) ü 对象的分类: 内置对象(原生对象): 就是JavaScript语言预定义的对象(如String/Number). 宿主对象: 一般由浏览器环境提供实现,主要分为 BOM 和 DOM. 自定义对象: 就是由开发人员自主创建的对象. ü 对象的创建: Ø 初始化器方式 var 对象名 = {         属性名 : 属性值 ,         方法名 : function( ){方法体} …
概念 执行环境 执行环境定义了变量或函数有权访问的其他函数,决定了他们各自的行为.每个执行环境都有一个与之关联的变量对象. 变量对象 环境中定义的所有变量和函数都保存在这个对象中. 全局执行环境 全局执行环境是最外围的一个执行环境.在web浏览器中,全局执行环境被认为是Window对象,因此所有全局变量和函数都是作为window对象的属性和方法创建的. 每个函数都有自己的执行环境. 作用域链 当代码在一个环境中执行,会创建变量对象的一个作用域链. 用途:保证对执行环境有权访问的所有变量和函数有序…
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>element对象</title> <script type="text/javascript"> // element对象 /* 获取属性:getAttribute(name) 设置属性:setAttribute(name, value) 删除属性:removeA…
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>node对象</title> <script type="text/javascript"> /* Node对象的属性 nodeName 节点名称 nodeType 节点类型 nodeValue 节点值 父节点 ul是li的父节点 parentNode 子节点 li…
对象属性document.title                 //设置文档标题等价于HTML的<title>标签document.bgColor               //设置页面背景色document.fgColor               //设置前景色(文本颜色)document.linkColor             //未点击过的链接颜色document.alinkColor            //激活链接(焦点在此链接上)的颜色document.vlink…
一.判断数据类型typeof与判断对象类型instanceof 1.typeof typeof只能判断基础数据类型,无法判断引用数据类型 <script> var s="hello" var i=8; alert(typeof(s))                       //输出string alert(typeof(i))                        //输出number var s2=new String("hello2")…
一.JavaScript三对象 1.分类方式一 1)ECMAScript JavaScript的ECMA规范 JS本身的对象 2)Dom 操作HTML相关 3)BOM游览器对象 游览器窗口对象,全局的对象,直接应用 操作浏览器的对象 2.分类方式二 二.ECMA对象 var s="hello" var s2=new String("hello") 三.function对象 1.function创建方式一 此方式为推荐方式 function func1(){ aler…
一.定义数组的方法: 定义了一个空数组: var myArray =new Array(); 指定有n个空元素的数组: var myArray=new Array(n); 定义数组并赋值: var myArray =[1,2,3]; 数组元素的使用: 数组名[下标]=值; 二.数组属性:length用法 数组对象.length; //返回数组长度 三.数组方法: concat();连接两个或更多的数组,并返回结果. var myArray=[1,2]; document.write(myArra…
Date对象 创建Date对象 //方法1:不指定参数 var date_obj = new Date(); alert(date_obj.toLocaleString()) //方法2:参数为日期字符串 var date_obj2 = new Date("2019/01/21 15:14"); var date_obj3 = new Date("2019 01 21 15:14"); alert(date_obj2.toLocaleString()); alert…
一.BOM对象 BOM游览器对象模型,可以与游览器对话 BOM下Window对象最重要,还有history.location对象 二.Window对象方法 1.alert提示框 2.confirm confirm("hello") 用处: 文件是对否保存 下载是否取消 var ret=confirm(“内容是否保存!”) alert(ret)   //返回值是Ture.False if (ret){ }else{ } 3.prompt输入框 var ret=prompr("h…
一.正则对象 1.创建方法 1)方式一 var re_obj=new RegExp("\d+","g") 规则+模式(g 全局模式/i 不区分大小写/gi) re_obj.test("asacdscsd124234")  //test方法只有两个返回值True.False 2)方式二 var re_obj2=/\d+/g; re_obj2.test("asacdscsd124234"); 二.Match对象…
一.Date对象 1.创建方法 var date_obj=new Date(); alert(date_obj.toLocaleString()) var date_obj=new Date("2017/4/16 13:27:11"); var date_obj=new Date("2017 4 16 13:27:11"); var date_obj=new Date("2017,4,16 13:27:11"); var date_obj=new…