javascript面向对象:
* 函数
* Arguments对象:模拟函数重载
* 变量的作用域:
* 作用域:
* 全局域
* 函数域
* 变量的分类:
* 全局变量:全局域+函数域
* 局部变量:当前函数域
* 特殊情况:
* 定义局部变量时,不使用var:局部变量被自动定义为全局变量
* 当全局变量与局部变量同名时,在函数域中只能访问到局部变量
* 闭包
* 作用域链:变量的作用域是具有传递性的
* 闭包:函数可以使用函数之外定义的变量
* (了解)循环中的闭包结构
* 对象
* 定义对象的三种方式:
* new Object()
* JSON:{key:value,key:value...}
* 函数对象(构造器):function 对象名(){this.属性名=属性值;}
* 操作对象的属性和方法:
* 调用:
* 对象名.属性名(方法名)
* 对象名[‘属性名(方法名)‘]
* 修改:
* 对象名.属性名 = 新的属性值;
* 增加
* 对象名.新的属性名 = 新的属性值;
* 删除
* delete 对象名.属性名(方法名)
* 内建对象:
* 数据封装类对象:
* Array
* String
* "" //string
* new String() //object
* Number
* 工具类对象:
* Date
* 获取当前时间
* Math
* 生成随机数(0-1)
* RegExp
* 匹配方法:test()
* 错误类对象:
* Error
* 异常对象
* 原型
* 定义:函数即对象,原型其实就是函数对象的一个属性。
* 注意:
* 原型是随着函数对象的创建而创建的(原型不能手动创建).
* 原型的调用:函数对象.prototype.
* 作用:
* 利用原型为函数对象增加属性和方法.
* 当函数对象本身的属性或方法与原型的属性或方法同名时:
* 函数对象本身的属性或方法的优先级更高.
* 内建对象具有一个属性:原型
* 利用原型为内建对象增加属性或方法?可以
* 支持:
* 利用这种特性,使得javascript代码更灵活.
* 反对:
* 为老版本扩展的内容,可能出现在下一个版本中.
* 我们站在这里.
* 扩展内容:
* 封装工具类 -> 库 -> 框架
* 建议使用库,反对使用框架。
* 浏览器内核:
* IE浏览器:IE6.0 IE11
* 其他浏览器:webkit(苹果)
* 谷歌浏览器
* 火狐浏览器
* 苹果浏览器
* 众多浏览器:
* 百度浏览器:号称自主内核v5
* 腾讯浏览器:号称自主内核x5
* 遨游浏览器:号称自主内核
* 不同浏览器内核集成的javascript引擎(v6)是不一样.
* 继承问题:
* javascript中不存在类的概念(没有class关键字).
* javascript没有extends关键字(继承).
* javascript中的继承是函数对象之间的继承.
* 原型链;
* javascript的普通对象之间存在继承吗? 实际是浅复制
JS对象以及"继承"
时间: 2024-10-17 23:36:17
JS对象以及"继承"的相关文章
js对象的继承
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <script> //继承 : 子类不影响父类,子类可以继承父类的一些功能 ( 代码复用 ) //属性的继承 : 调用父类的构造函数 call //
JS 对象之继承
<!-- ————————JS对象之继承 ———————— --> //父类 function Sup(name){ this.name=name; } //父类的原型 Sup.prototype={ constructor:Sup, sayName:function(){ alert(this.name); } }; //子类构造函数 function Sub(age){ this.age=age; } //让子类的原型等于父类的实例 Sub.prototype=new Sup("
js对象和继承总结
创建对象方式: [工厂模式]:无法解决对象识别问题 [构造函数模式]:每个方法都要在每个实例上创建一遍 [原型模式]:原型上属性为引用类型的问题,见例子 [组合模式]:解决上述问题 [动态原型模式]:把所有信息封装在构造函数中,同时具备组合模式的优点. [寄生构造函数模式][稳妥构造函数模式] 继承方式: [原型链继承]:父类构造函数属性为引用类型的问题 (因为父类构造函数内的属性,即为子类原型上的属性),见例子 [借用构造函数继承]:父类原型上的方法无法被继承 [组合继承]:解决上述问题 [原
关于js的对象原型继承
javascript中,对象的继承是通过原型去继承. 可以这样理解:js中的对象,包含的除了属性和方法,还有一个最基本的原型__proto__对象.这个原型__proto__指向谁,这个对象就继承谁.这是最容易理解对象原型继承的一种方式. 如下面的代码: var student={ name:'zhangsan', age:21, run:function(){ return this.name+' is running!'; } }; var xiaoming={ name:'xiaoming
JS中有关对象的继承以及实例化、浅拷贝深拷贝的奥秘
一.属性的归属问题 JS对象中定义的属性和方法如果不是挂在原型链上的方法和属性(直接通过如类似x的方式进行定义)都只是在该对象上,对原型链上的没有影响.对于所有实例共用的方法可直接定义在原型链上这样实例化的的时候就不用对每个实例定义该属性方法,所有的实例均具有该方的引用见最后的输出. function Myclass(){ this.x=" x in Myclass"; this.get=function(){}//每次实例化对象,每个对象的该方法都是独立的,是不相同的 } Mycla
JS对象继承篇
JS对象继承篇 ECMAScript只支持实现继承,而且其实现继承主要是依靠原型链来实现的 原型链 其基本思路是利用原型让一个引用类型继承另一个引用类型的属性和方法 function Person(){ this.name = "Person"; } Person.prototype.getName = function(){ return this.name; }; function SuperPerson(name,sex){ this.name = name; this.sex
js最好的继承机制:用对象冒充继承构造函数的属性,用原型链继承 prototype 对象的方法。
js最好的继承机制:用对象冒充继承构造函数的属性,用原型prototype继承对象的方法. function ClassA(sColor) { this.color = sColor; } ClassA.prototype.sayColor = function () { alert(this.color); }; function ClassB(sColor, sName) {//在 ClassB 构造函数中,用对象冒充继承 ClassA 类的 sColor 属性 ClassA.call(th
js 对象深复制,创建对象和继承
js 对象深复制,创建对象和继承.主要参考高级编程第三版,总结网上部分资料和自己的代码测试心得.每走一小步,就做一个小结. 1.对象/数组深复制 一般的=号传递的都是对象/数组的引用,如在控制台输入 var a=[1,2,3], b=a; b[0]=0; a[0] 此时显示的结果为0,也就是说a和b指向的是同一个数组,只是名字不一样罢了. 单层深复制: 1.js的slice函数: 返回一个新的数组,包含下标从 start 到 end (不包括该元素,此参数可选)的元素. 控制台输入: var a
JS对象继承的几种方式总结
今天学习了一下js的继承,js中的继承主要分四种,原型继承,构造函数继承,call/apply继承以及es6的extend继承.1.原型继承:原型继承主要利用js对象的prototype引用父类的构造函数来复制父类的方法. //定义一个Person类 function Person(name){ this.name=name; } //打招呼 Person.prototype.sayHello=function(){ alert("Hello,my name is "+this.nam