JS高级:面向对象的构造函数】的更多相关文章

一.工厂模式创建对象及优缺点 继承就是把公共的部分抽象出来作为父类,基类.吃饭,跑步等 var a = {}; //批量创建不方便,不能重复设置公共属性的代码 //工厂模式出现了,创建10个Cat对象 每个对象都有年龄.姓名的属性,包括run方法 注意区分 js高级-函数的四种调用模式 function createCat(age,name){ var o = new Object(); o.age = age; o.name = name; o.run = function (){ conso…
<script type="text/javascript"> //------------------Person类 //(Person)的构造函数 function Person(name, sex) { this.name = name; this.sex = sex; } Person.prototype.showName = function() { console.log(this.name) }; Person.prototype.showSex = func…
1.面向对象:类的标志,通过类可创建多个具有相同属性和方法的对象 2.创建对象 1)工厂模式方式:避免重复实例化但未能解决识别问题  function boss(name, age) {           var obj = new Object();           obj.name = name;           obj.age = age;           obj.run = function () {             return "姓名:" + this…
面向对象的编程思想(贪吃蛇梳理) 模拟贪吃蛇游戏,做的项目 地图: 宽,高,背景颜色,因为小蛇和食物都是相对于地图显示的, 这里小蛇和食物都是地图的子元素, 随机位置显示, 脱离文档流的, 地图也需要脱离文档流--css需要设置:宽, 高, 背景颜色, 脱标 食物---div元素 elements--->存储div的数组(将来删除的食物div时候, 先从map中删除div, 再从数组中移除div) 食物: 宽, 高, 背景颜色, 横坐标, 纵坐标 一个食物就是一个对象, 这个对象有相应的属性,…
改写: 1.前提:所有东西都在 onload 里 2.改写:不能有函数嵌套,可以有全局变量 onload --> 构造函数 全局变量 --> 属性 函数 --> 方法 4.改错: this this啥时候会出问题? 1.定时器 <script> function Aar() { this.a = 12; setInterval(this.show, 1000); //这里的this 是window } Aar.prototype.show = function() { con…
面向对象三要素: 封装 继承 多态 1.this 详解,事件处理中this的本质 window this -- 函数属于谁 <script type="text/javascript"> var arr=[12,65,87]; //this:当前的方法,属于谁 arr.show =function (argument) { // body... console.log(this); //[12,65,87] } arr.show(); function show(){ co…
需要注意的问题: 1.其他模块若是使用构造函数MP3创建对象,唯一不同的就是他们传入的音乐库是不一样的,所以构造函数中存在一个songList属性,其他一样的就被添加到了构造函数的原型对象之中 2.原型对象是直接替换的,所以会失去constructor属性,我们最好给这个属性重新赋值 3.我们new的过程中,就可以将传入的音乐库进行提取然后渲染到浏览器上,所以在属性中我们在new过程中就去执行render()方法 4.还有在CURD的方法调用中,只要修改了原来的songList库就必须再次调用r…
把方法包在一个Json里 var p1 = { name: "唐三", sex: "男", dreamdu: { URL: "www.dreamdu.com", name: "梦之都", author: "monkey", say: function() { document.write(this.name + " say hello") } //允许嵌套 }, showName: fu…
定义和用法 prototype 属性允许您向对象添加属性和方法 注意: Prototype 是全局属性,适用于所有的Javascript对象. 语法 object.prototype.name=value <script> function employee(name,jobtitle,born){ this.name=name; this.jobtitle=jobtitle; this.born=born; } var fred=new employee("Fred Flintst…
注意事项 1.给li元素注册事件,函数里面的this指的li元素,那么我们可以在注册事件之前将Tab对象用that=this进行保存 2.使用沙箱模式,所以暴露给外面的变量使用的是window.tab,将window作为参数传递进去 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title>…
一.前言 了解JavaScript面向对象,需要先了解三个名词: 构造函数,实例对象和原型对象. 注意:JavaScript中没有类(class)的概念,取而代之的是构造函数,两者类似却又有很大的差别. 先上代码,最常用的: function Person(name, age) { this.name = name; this.age = age; this.eat= function() { alert('吃西红柿') } } var person1 = new Person('小米', 28…
JS高级---构造函数,通过原型添加方法,原型的作用: 共享数据, 节省内存空间 构造函数 //构造函数 function Person(sex, age) { this.sex = sex; this.age = age; } 通过原型添加方法 //通过原型添加方法 Person.prototype.sayHi = function () { console.log("打招呼,您好"); }; 通过console.dir来观察和对比per和Person,可以看出: 实例对象中有个属性…
一.函数高级 1.函数回调 函数回调的本质:在一个函数中,满足特定条件下,调用另一个函数 // 回调的函数 function callback(data) {} // 逻辑函数 function func(callback) { // 函数回调 if (callback) callback(data); } function a_fn(data) { console.log('a_fn'); // 如果要使用数据,那么定义形参接收参数 console.log(data); } function…
二.继承 OO是面向对象语言最为有魅力的概念.一般的OO语言都实现了两种继承,接口继承和实现继承.接口继承只继承方法签名,而实际继承继承了实际的方法. 而在JS中,函数没有签名,所以无法实现接口继承.只能依靠原型链--实现继承. 2.1原型链 JS中描述了原型链的概念,并利用原型链作为实现继承的主要方法. 其基本思想:利用原型链让一个引用类型继承另一个引用类型的属性和方法. functionSuperF(){ this.superPropty ='B'; } SuperF.prototype.g…
js 高级函数作用域安全构造函数 function Person(name, age)    {        this.name = name;        this.age = age;    }    var person1 = Person("lin3615", 26);    //alert(window.name); // lin3615    alert(person1.name); // 出错,此时成了全局的了========================    f…
一.介绍 老铁们,这次是JS的面向对象的编程OOP(虽然我没有对象,心累啊,但是可以自己创建啊,哈哈). JS高程里第六章的内容,这章内容在我看来是JS中很难理解的一部分.所以分成三篇博客来逐个理清. 这是第一篇:理解对象,认识对象属性的类型. 二.理解对象 书中原话--ECMA-262中把对像定义为:无序属性的集合.其中属性可以是基本值,对象或者是函数. 1.我们通俗点理解一下 对象是一个真实存在的东西,就像世上每一个人.每一个物体一样,它有自己的属性,行为.也就是说各种属性集合在一起就是一个…
一.介绍 我们继续面向对象吧,这次是面向对象编程的第二篇,主要是讲创建对象的模式,希望大家能从博客中学到东西. 时间过得很快,还是不断的学习吧,为了自己的目标. 二.创建对象 1.前面的创建对象方式 a.在前面的章节中,我们创建对象的方式有两种:new Object() 和 对象字面量: //1.new Object() 创建对象 var person1 = new Object(); person1.name = "ry"; person1.age = 21; //2.对象字面量 v…
一.面向对象编程(继承) 这篇博客是面向对象编程的第三篇,JS继承.继承顾名思义,就是获取父辈的各种"财产"(属性和方法). 怎么实现继承? 我们的JavaScript比较特别了,主要通过原型链实现继承的. 下面介绍各种实现继承的方式:原型链继承,借用构造函数,组合继承,原型式继承,寄生式继承,寄生组合式继承. 二.实现继承方式 1.原型链方式 原型我们都知道,每个构造函数都有一个原型对象(prototype),用于存放共享的属性方法. 原型链继承原理:我们要继承一个父类,那就把这个子…
一.介绍 我们继续面向对象吧,这次是面向对象编程的第二篇,主要是讲创建对象的模式,希望大家能从博客中学到东西. 时间过得很快,还是不断的学习吧,为了自己的目标. 二.创建对象 1.前面的创建对象方式 a.在前面的章节中,我们创建对象的方式有两种:new Object() 和 对象字面量: //1.new Object() 创建对象 var person1 = new Object(); person1.name = "ry"; person1.age = 21; //2.对象字面量 v…
JS式面向对象 一.理解对象 一)属性类型 ECMA-262 第 5 版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特征. ECMA-262 定义这些特性是为了实现 JavaScript 引擎用的,因此在 JavaScript 中不能直接访问它们. 1.数据属性 数据属性包含一个数据值的位置.在这个位置可以读取和写入值.数据属性有 4 个描述其行为的特性.  [[Configurable]]:表示能否通过 delete 删除属性从而重新定义属性,能否修…
一.介绍 老铁们,这次是JS的面向对象的编程OOP(虽然我没有对象,心累啊,但是可以自己创建啊,哈哈). JS高程里第六章的内容,这章内容在我看来是JS中很难理解的一部分.所以分成三篇博客来逐个理清. 这是第一篇:理解对象,认识对象属性的类型. 二.理解对象 书中原话--ECMA-262中把对像定义为:无序属性的集合.其中属性可以是基本值,对象或者是函数. 1.我们通俗点理解一下 对象是一个真实存在的东西,就像世上每一个人.每一个物体一样,它有自己的属性,行为.也就是说各种属性集合在一起就是一个…
本文的面向对象分为ES6和ES6之前的,重点学习ES6的===============================一.面向对象 1.什么是面向对象 a)什么是对象:万物都可以抽象成对象 时间对象 var oDate=new Date();(我们经常var的oDate就是一个时间对象) oDate.getFullYear();(新建的oDate就继承了Date里面的所有方法) 数组 var arr=new Array(); arr.sort(); arr.length; json{ name:…
ECMAScript1997 年欧洲计算机制造商协会 39 号技术委员会制定了ECMA-262标准(别名 ECMAScript),而浏览器只是负责实现,ie浏览器实现的结果是jscript,远景浏览器实现的是javascript,其它浏览器这个时候还处于受精状态.所以ECMAScript的版本和javascript和jscript版本并不一定一致.tip:1.ECMAScript标准是受javascript影响而诞生的,是javascript那帮人提交的提案给的ECMA协会的,等协会标准出台时,…
对象 是什么? 对象就是一个整体,对外提供一些操作,比如:电视机(不用知道内部的构造,只知道怎么用) 面向对象 是什么? 使用对象时,只关注对象提供的功能,不关心内部细节,比如:操作电视机(只知道用遥控器控制) JS的面向对象 特点: 1.抽象:抓住问题的核心 2.封装:不考虑内部细节,只考虑外部使用 3.继承:从已有的对象上,继承新的对象 ·多重继承 ·多态(少用) 对象的组成:                          | var cat = { 1.属性(变量) | cat.nam…
最近学了 JS 的面向对象,这篇文章主要是探讨 JS 的面向对象中继承的那些事. JS中继承的特点: 1.子类继承父类: 2.子类可以用父类的方法和属性 3.子类的改变可以不影响父类 下面用一个例子来说明 JS 的继承 这段代码创建了一个父类以及它的原型,同时还创建了一个子类,并继承了父类的私有属性 <script> //这是父类 function Father(name,age,marry){ this.name=name; this.age=age; this.marry=marry; }…
JS高级 1. 访问对象属性(方法也是属性)的通用方式:obj['属性名'] 1. 属性名包含特殊字符,如"-".空格,访问:obj['content-type'] 2. 属性名不确定:var name='age'; var value=18; obj[name]=value 2. IIFE:立即执行函数,用于隐藏实现.避免污染全局命名空间.编写JS模块 (function(){ ... })() ---> 即匿名函数自调用 3. this的指向 1. 任何函数本质上都是通过某个…
说实在话,以前我只需要知道"寄生组合继承"是最好的,有个祖传代码模版用就行.最近因为一些事情,几个星期以来一直心心念念想整理出来.本文以<JavaScript高级程序设计>上的内容为骨架,补充了ES6 Class的相关内容,从我认为更容易理解的角度将继承这件事叙述出来,希望大家能有所收获. 1. 继承分类 先来个整体印象.如图所示,JS中继承可以按照是否使用object函数(在下文中会提到),将继承分成两部分(Object.create是ES5新增的方法,用来规范化这个函数…
面向对象编程都会涉及到继承这个概念,JS中实现继承的方式主要是通过原型链的方法. 一.构造函数.原型与实例之间的关系 每创建一个函数,该函数就会自动带有一个 prototype 属性.该属性是个指针,指向了一个对象,我们称之为 原型对象.什么是指针?指针就好比学生的学号,原型对象则是那个学生.我们通过学号找到唯一的那个学生.假设突然,指针设置 null, 学号重置空了,不要慌,对象还存在,学生也没消失.只是不好找了. 原型对象上默认有一个属性 constructor,该属性也是一个指针,指向其相…
阶段目标 主要学习 JS 的面向对象编程思想. 对象 概念 在编程领域,任何 事 和 物都可以概括成对象. 对象概念练习 用编程思想抽象出你心仪对象的属性和方法. 对象由属性和方法组成,属性和方法都可以用 键值对 定义. 心仪对象: 属性:特征 身高:150 cm 年龄:36 性别:女 腿:大长腿 方法:功能 - 函数 生活技能:煮饭 运动技能:打篮球 艺术技能:rap <!DOCTYPE html> <html lang="en"> <head>…
继承 面向对象编程思想: 根据需求, 分析对象, 找到对象有什么特征和行为, 通过代码的方式来实现需求, 要想实现这个需求,就要创建对象 ,要想创建对象, 就应该显示有构造函数, 然后通过构造函数来创建对象, 通过对象调用属性和方法来实现相应的功能及需求, 即可   需注意 首先,JS不是一门面向对象的语言, JS是一门基于对象的语言, 那么为什么学习js还要学习面向对象, 因为面向对象的思想适合于人的想法, 编程起来会更加的方便,及后期的维护.... 面向对象的编程语言中有类(class)的概…