JavaScript学习笔记八:面向对象的程序设计

1. ECMA-262把对象定义为:无序属性的集合,其属性可以包含基本值,对象和函数。每个对象都是基于一个引用类型创建的。

2. 属性有两种:数据属性和访问器属性,其中访问器属性不能直接定义,必须使用Object.defineProperty()来定义。

3. 任何函数,只要通过new操作符来调用,那它就可以作为构造函数。

4. 原型:无论什么时候,只要创建了一个新函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象。

这个连接存在于实例与构造函数的原型对象之间,而不是存在于实例与构造函数之间。

当代码读取某个对象的某个属性时,先搜索对象实例本身,如果在实例中找到了具有给定名字的属性,则返回该属性值;如果没有找到,则继续搜索指针指向的原型对象中是否有该属性。

5. 实例与原型之间的连接是一个指针,而非一个副本。

6. 若把原型修改为另外一个对象,就等于切断了构造函数和最初原型之间的联系。

7. 目前ECMAScript中使用最广泛的创建自定义类的方法是构造函数和原型混成模式。

8. 构造函数、原型和实例的关系:每个构造函都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。

8. 继承:ECMAScript只支持实现继承,不支持接口继承,而且其实现继承主要是依靠原型链。

时间: 2024-10-20 08:44:13

JavaScript学习笔记八:面向对象的程序设计的相关文章

javascript 高级程序设计学习笔记(面向对象的程序设计) 2

在调用构造函数时会为实例添加一个指向最初原型的指针,我们可以随时为原型添加属性和方法,并且能在实例中体现出来,但如果是重新了原型对象,那就会切断构造函数与最初原型的联系. function Dog () { } var friend = new Dog(); Dog.prototype ={ constructor : Dog, name : "Bob", age : 11, jump : function () { alert("跳一下"); } }; frien

JavaScript学习笔记八

本文根据慕课网课程<JavaScript进阶>学习整理 第8章 浏览器对象 8-1 window对象 ??window对象是BOM的核心,window对象指当前的浏览器窗口. ??window对象方法: ?? 8-2 JavaScript 计时器 ??在JavaScript中,我们可以在设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行. ??计时器类型: 一次性计时器:仅在指定的延迟时间之后触发一次. 间隔性触发计时器:每隔一定的时间间隔就触发一次. ??计时器方法: ?? 8-3

Python学习笔记八 面向对象高级编程(二)元类

参考教程:廖雪峰官网https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 在廖老师的学习网站里"使用元类"这部分还是把我给看晕了...网上搜到一篇感觉讲的相对易懂一些,贴出链接:两句话掌握 Python 最难知识点--元类--以此文作为这篇笔记的源本. "道生一,一生二,二生三,三生万物" 1.在Python世界中,"type"即为道

javascript学习笔记(八)

3.求出数组中所有数字的和 一. 实现页面样式 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>求出数组中所有数字的和</title> <style> body{ color:#999; font:12px/1.5 Tah

Python学习笔记八 面向对象高级编程(一)

参考教程:廖雪峰官网https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 一.使用__slots__ 正常情况下,当定义了一个类之后,我们可以给这个类的实例绑定任何属性,这就是动态语言的优势: class Student(object): def __init__(self,name,age): self.name=name self.age=age bob=Student('Bob

JavaScript学习笔记——8.面向对象

1.封装——初始化方式 var Cat = { name:'jack', age:5, say:function(){ alert('hello world!'); } } 或: var Cat = {} Cat.name = 'jack'; Cat.age = 5; Cat.say = function(){ alert('hello world!'); } alert(Cat.name); Cat.say(); 2.封装——Object方式 function Cat(name,age){ v

JavaScript学习笔记2_面向对象

1.对象的定义 ECMAScript中,对象是一个无序属性集,这里的"属性"可以是基本值.对象或者函数 2.数据属性与访问器属性 数据属性即有值的属性,可以设置属性只读.不可删除.不可枚举等等 访问器属性是用来设置getter和setter的,在属性名前加上"_"(下划线)表示该属性只能通过访问器访问(私有属性),但并不是说添个下划线就把属性变成私有的了,这只是习惯约定的一种命名方式而已.访问器属性没什么用,原因如下: + 高程中使用了上面的示例代码,原理是book

C++ Primer 学习笔记_73_面向对象编程 --再谈文本查询示例

面向对象编程 --再谈文本查询示例 引言: 扩展第10.6节的文本查询应用程序,使我们的系统可以支持更复杂的查询. 为了说明问题,将用下面的简单小说来运行查询: Alice Emma has long flowing red hair. Her Daddy says when the wind blows through her hair, it looks almost alive, like a fiery bird in flight. A beautiful fiery bird, he

javascript学习笔记---ECMAScriptECMAScript 对象----定义类或对象

使用预定义对象只是面向对象语言的能力的一部分,它真正强大之处在于能够创建自己专用的类和对象. ECMAScript 拥有很多创建对象或类的方法. 原始的方式 因为对象的属性可以在对象创建后动态定义(后绑定),类似下面的代码: var oCar = new Object; oCar.color = "blue"; oCar.doors = 4; oCar.mpg = 25; oCar.showColor = function() { alert(this.color); };不过这里有一