content {:toc} 本文为慕课网 JavaScript深入浅出 JavaScript 面向对象笔记。...概念 面向对象程序设计(Object-oriented programming,OOP)是一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的实例。...——维基百科 一般面向对象包含:继承,封装,多态,抽象 ---- 基于原型的继承 function Foo() { this.y = 2; } console.log(typeof Foo.prototype...' is walking...'); }; function Student(name, age, className) { Person.call(this, name, age); //使...---- prototype 属性 改变 prototype JavaScript 中的 prototype 是对象,在运行的时候可以修改。
1 创建对象 在 JavaScript 中可以通过多种方式创建对象。...3 DOM 对象 DOM 对象,就是 HTML 页面的文档对象。整个网页的显示,都由 Document 对象构成。...文档对象又由许多的元素对象构成,文档对象就有许多的属性和方法,用来操纵整个页面的显示,以及事件的处理。所有的元素对象最终组成庞大的 DOM 树。...这种写法可以写在 script 标签里,也可以直接在元素的标签内作为属性写入,属性的值为一个方法,例如 helloworld javascript...helloworld javascript"> var h1 = document.querySelector('h1') h1.
image.png 这属于基础知识,要打牢基础。
类和对象类是用于定义对象的模板或蓝图;它包含对象的属性和方法,我们可以使用class关键字来定义类。....`); }}在上面的例子中,我们定义了一个sayHello方法,它用于输出对象的属性。继承继承是面向对象编程的一个重要概念。它允许我们从现有的类创建新类,从而在不重复代码的情况下扩展现有的功能。...在JavaScript中,我们可以使用extends关键字来创建一个新类,它从现有的类继承属性和方法。...多态多态是面向对象编程的另一个重要概念。它允许不同的类实现相同的方法,以便在不同的情况下以不同的方式处理相同的请求。在JavaScript中,我们可以使用相同的方法名在不同的类中实现不同的行为。...封装当使用面向对象编程时,我们通常会封装数据和方法以确保对象的安全性和可维护性。在JavaScript中,封装是通过创建类和使用访问修饰符来实现的。
面向对象 1.1 对象(Object) 对象时 JS 中的引用户数类型 对象时一种复合数据类型,在对象可以保存多个不同数据类型的属性 使用 typeof 检查一个对象时,会返回 object 1.1.1...1.1.3 读取对象的属性 语法: 对象.属性名 对象[“属性名”] 如果读取一个对象吧没有的属性,它不会报错,而是返回一个 undefined 1.1.4 删除对象中的属性 语法: delect 对象...② 将新的对象作为函数的上下文对象 ③ 执行函数中的代码 ④ 将新建的对象返回 1.5.2 instanceof 用来检查一个对象是否一个类的实例 语法: 对象 instanceof 构造函数 如果该对象时构建函数的实例...,这个对象我们称为原型对象。...当原型对象就相当于一个公共的区域,凡是通过同一个构造函数创建的对象他们通常都可以访问到相同的原型对象 我们可以将对象中公有的属性和方法统一添加到原型的对象中,这样我们只需要添加一次就可以使所有的对象都可以使用
总有人强调:JavaScript 并非“面向对象的语言”,而是“基于对象的语言”。 0 1 什么是面向对象? 先说什么是对象,从中文语义上来讲很难理解“对象”的真正含义。...,使之“看起来更像 Java”。...下面这段代码就展示了运行时如何向一个对象添加属性,一开始定义了一个对象 o,定义完成之后,再添加它的属性 b,这样操作是完全没问题的。...JavaScript 语言标准也已经明确说明,JavaScript 是一门面向对象的语言,标准中能这样说,正是因为 JavaScript 的高度动态性的对象系统。...要想理解 JavaScript 对象,必须清空脑子里“基于类的面向对象”相关的知识,回到人类对对象的朴素认知和面向对象的语言无关基础理论,就能够理解 JavaScript 面向对象设计的思路。 end
这个标识符代表了一个Arguments对象,Arguments对象非常类似于Array(数组)对象,比如都有length属性,访问它的值用”[]”操作符,利用索引来访问参数值,但是,二者是完全不同的东西...函数本身就是一种对象,因此我们完全可以把一个函数放到一个对象里面。此时,这个函数就成了对象的一个方法。此后如果要使用该方法,则可以通过对象名利用”.”操作符来实现。...仅仅是obj的方法,只能通过对象调用 f0(); 方法的调用需要对象的支持,那么在方法中如何获取对象的属性呢?...sex"]); }; //NAME_female obj.print(); obj.sex = "male"; //NAME_male obj.print(); 下面来一个更加面向对象的例子...很明显,例子中的方法更形象,更直观一些,而且好象有了那么一点面向对象的影子。
原文地址:https://github.com/Nealyang/YOU-SHOULD-KNOW-JS 谈谈对象属性的特性 毕竟是面向对象编程,我们在讨论如何面向对象之前先讨论讨论对象具有哪些属性和特性...关于javaScript高程中说到的别的寄生构造函数模式和稳妥构造函数模式大家可以自行查看哈~这里就不做过多介绍了。 继承 说到面向对象,当然得说到继承。说到继承当然得说到原型。...说到原型,这里我们摘自网上一篇博客里的段落 为了说明javascript是一门面向对象的语言,首先有必要从面相对象的概念入手1、一切事物皆对象。2、对象具有封装和继承特性。...3、对象与对象之间使用消息通信,各自存在信息隐秘 。 javascript语言是通过一种叫做原型(prototype) 的方式来实现面向对象编程的。...当然,还有比如java就是基于类来实现面向对象编程的。 基于类的面向对象和基于原型的面向对象方式比价 对于基于类的面向对象的方式中,对象依靠class类来产生。
javascript中的面向对象: ECMA标准定义JS中的对象:无序属性的集合,其属性可以包含基本值、对象或者函数。...可以简单理解为JS的对象是一组无序的值,其中的属性或方法都有一个名字,根据这个名字可以访问相映射的值(值可以是基本值/对象/方法) 面向对象三个基本特征是:封装、继承、多态 封装:将对象运行所需的资源封装在程序对象中...对象是“公布其接口”。其他附加到这些接口上的对象不需要关心对象实现的方法即可使用这个对象。这个概念就是“不要告诉我你是怎么做的,只要做就可以了。”对象可以看作是一个自我包含的原子。...优点 1、易维护 采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。...2、质量高 在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。 3、效率高 在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。
什么是对象,面向对象(Object-Orented,OO)的抽象 从前在Javascript王国里有一个国王,他觉得世界上最美妙的声音就是鸭子的叫声,于是国王召集大臣,要组建一个1000只鸭子组成的合唱团...JS中的面向对象、面向对象的特点 由鸭子模型到封装 通俗点就是说:对象是一个对外封闭的整体,不关注内部细节,外界只需要掌握其属性或者说是操作方法就可以了。...同一操作作用于不同的对象,结果不同。JavaScript的多态实际上是吧做什么和谁去做区分开了。 多态依赖于继承 父类存在时,子类只需要继承了父类的对象,就可以实现一个新的对象。...现在可以慢慢理解面向对象编程的三个特点了。"的卢"属于世间万物(window),也属于我们所封装的马类对象,继承了它所有父级的特点,具有万物特点比如具有window下的常用属性。...prototype——混合模式 prototype:原型 javascript中,只要是函数,都有一个隐藏的prototype属性。它指向一个对象,这个对象包含了所有实例都可以使用的对象和方法。
面向对象,敲程序的应该都知道这个思想,那什么是面向对象?后台的应该比较了解,前端由于在业务开发中不会使用这种思想,应该很多都对面向对象很陌生。...JavaScript中面向对象的思想就是一个包含属性和方法的构造函数。...JavaScript的面向对象思想就是这么简单,封装一个构造函数,函数里面有属性和方法,然后把一些属性和方法暴露出去,让外部的可以调用。...在业务开发中我们或许用不到,但是真正大型项目或者是编写一些库的时候,面向对象思想是一定要用的。 比如JavaScript插件一哥jQuery,就是一个典型的面向对象库。...至于如何使用面向对象思想开发,这就不是本人现在能解释的了,还是需要继续努力。
面向对象术语 对象 ECMA-262 把对象(object)定义为“属性的无序集合,每个属性存放一个原始值、对象或函数”。严格来说,这意味着对象是无特定顺序的值的数组。...尽管 ECMAScript 如此定义对象,但它更通用的定义是基于代码的名词(人、地点或事物)的表示。 类 每个对象都由类定义,可以把类看做对象的配方。...类不仅要定义对象的接口(interface)(开发者访问的属性和方法),还要定义对象的内部工作(使属性和方法发挥作用的代码)。编译器和解释程序都根据类的说明构建对象。...面向对象语言的要求 一种面向对象语言需要向开发者提供四种基本能力: 封装 - 把相关的信息(无论数据或方法)存储在对象中的能力 聚集 - 把一个对象存储在另一个对象内的能力 继承 - 由另一个类(或多个类...)得来类的属性和方法的能力 多态 - 编写能以多种方法运行的函数或方法的能力 ECMAScript 支持这些要求,因此可被是看做面向对象的。
我们可以从几个方面去说JavaScript是什么: 基于对象 javaScript中内置了许多对象供我们使用【String、Date、Array】等等 javaScript也允许我们自己自定义对象 事件驱动...特殊类型【null、undefined】 当定义了变量,没有任何赋值的时候,该变量就是undefined类型 复合类型【数组、对象、函数】 ---- javaScript对象的类型 在JavaScript...增加属性,访问属性 我们要为创建的对象增加属性和访问属性的值! 使用.操作符增加属性 JavaScript是弱类型的语言,可以动态的添加属性。...//我们通常就是在这里编写公有方法来访问私有属性 }; 静态属性和方法 在JavaScript中定义静态属性其实就是通过prototype原型对象来定义的。...遍历JavaScript对象 当使用for in来遍历对象的时候,它的循环计数器是对象的属性名 //对象json上,包含了两个对象a和b属性 var json = {a:{num:1},
JavaScript之Window对象 首先我们先了解一个概念:事件。 事件,就是把一段代码设置好,满足条件时触发。或者说,事件是可以被 JavaScript 侦测到的行为。...网页中每个元素都可以触发JavaScript事件。 我们先来看一个简单的事件: 对象之Windows对象 DOM对象:当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。 HTML DOM 模型被构造为对象的树。 ?...打开网页后,首先看到的是浏览器窗口,即顶层的window对象。 其次,看到的是网页文档的内容,即document文档。 我们先来看一下Window对象。...Window有属性和方法: 属性(值或者子对象): opener:打开当前窗口的源窗口,如果当前窗口是首次启动浏览器打开的,则opener是null,可以利用这个属性来关闭源窗口。
题记 由于js不像java那样是完全面向对象的语言,js是基于对象的,它没有类的概念。...所以,要想实现继承,一般都是基于原型链的方式; 一、继承初探 大多数JavaScript的实现用 __proto__ 属性来表示一个对象的原型链。...__指针,指向原型对象) 当查找一个对象的属性时,JavaScript 会向上遍历原型链,直到找到给定名称的属性为止。...__proto__, prop); } else { return undefined; } } 我们在js中使用面向对象很多时候是这样子的: function...可以封装成一个方法,这方法其实只做一件事,就是把子对象的prototype属性,指向父对象,从而使得子对象与父对象连在一起。
,能否修改属性的特性,或者能否把属性的特性,或者能否把属性修改为访问器属性,像前面例子中 那样直接在对象上定义的属性,他们的这个特性默认为true. ...像前面例子中那样直接在对象上定义的属性,它们的这特性默认值为true. ...[Writable]: 表示能否修改属性的值,像前面例子中那样直接子对象上定义的属性,它们的这个属性默认值为true. ... 返回是一个对象: 如果是访问器属性,这个对象属性有 configurable,enumerable,get 和set; 如果是数据属性 ,这个的对象的属性有...2.构造函数的作用域赋给新对象(因此this 就指向了这个新对象) 3.执行构造函数中的代码(为这个新对象添加属性) 4.返回新对象。
Javascript是一种基于对象的语言,你遇到的所有东西几乎都是对象。但是,它又不是一种真正的面向对象编程语言,因为它的语法中没有 class(类)。...三、 构造函数模式 为了解决从原型对象生成实例的问题,Javascript 提供了一个构造函数模式。 所谓"构造函数",其实就是一个普通函数,但是内部使用了 this 变量。...alert(cat1.constructor == Cat); //true alert(cat2.constructor == Cat); //true Javascript还提供了一个 ...五、 Prototype模式 Javascript规定,每一个构造函数都有一个 prototype 属性,指向另一个对象。这个对象的所有属性和方法,都会被构造函数的实例继承。...alert(cat1.eat == cat2.eat); //true 六、 Prototype模式的验证方法 为了配合 prototype 属性,Javascript 定义了一些辅助方法,帮助我们使用它
ES6之前,javascript本质上不能算是一门面向对象的编程语言,因为它对于封装、继承、多态这些面向对象语言的特点并没有在语言层面上提供原生的支持。...其实,面向对象的概念本质上来讲不是指某种语言特性,而是一种设计思想。 正是由于javascript本身对面向对象编程没有一个语言上的支持标准,所以才有了五花八门、令人眼花缭乱的“类继承”的代码。...所以在ES6中出现了class extends等关键字,解决了javascript面向对象中出现了问题。...之前花了大量篇幅来讲述面向对象中的封装和继 今天我们研究一下javascript面向对象中的多态 javascript 多态 如果你在搜索引擎中搜索javascript多态,有那么一个栗子你一定会搜到...将行为分布在各个对象中,并让这些对象各自负责自己的行为,这正是面向对象设计的优点。 多态增加了代码的可扩展性,降低了代码维护成本
javaScript有两种开发模式:1.函数式(过程化),2.面向对象(OOP)。面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。...但是,javaScript没有类的概念,因此它的对象也与基于类的语言中的对象有所不同。 一.创建对象 创建一个对象,然后给这个对象新建属性和方法。...这种是JavaScript创建对象最基本的方法,但有个缺点,想创建一个类似的对象,就会产生大量的代码。...如何判断属性是在构造函数的实例里,还是在原型里?...四.继承 继承是面向对象中一个比较核心的概念。其他正统面向对象语言都会用两种方式实现继承:一个是接口实现,一个是继承。
昨天我们讲了在面向对象中创建对象的几种方式 工厂模式 构造函数模式 工厂模式创建的对象,像工厂一样来创建对象,创建的每一个对象都是通过new Object()来创建的,原型直指Object() 构造函数似乎不错...$wx = Wx 这时候就用到了原型 我之前就用了大量篇幅讲过javascript的原型,这次遇到了面向对象,换个角度再次讨论 原型模式创建对象 我们创建的每个函数都有一个prototype(原型)属性...,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。...使用原型对象的好处是可以让所有对象实例共享它所包含的属性和方法。 也就是说,不用再构造函数中定义对象的实例信息,而是将这些属性和方法添加到原型对象中 一个?...实例属性屏蔽同名的原型属性 在实例中添加属性,使这个属性和原型中的属性同名,这个属性会屏蔽掉(也可以理解为覆盖掉)原型中的那个属性 继续?的?
领取专属 10元无门槛券
手把手带您无忧上云