继承是所有面向对象的语言最让人津津乐道的概念 许多面向对象的语言都支持两种实现继承的方式: 1.接口继承 2.实现继承 由于ECMAScript中没有函数签名,所以自然也是不支持接口继承 所以JS中能实现的也只能是实现继承,而实现继承主要是依靠原型链 至于原型链的构成在昨天的文章中也大概讲了一下 无非就是每个对象的实例都有一个[[Prototype]]的属性(在游览器中以__proto__来显式地支持此属性)指向了其构造函数的原型对象 每个对象都有一个这样的引用,就构成了原型链 原型链的顶端是O…
JS中对象相关的最重要的恐怕就是原型链了 原型链也是JS中对象继承的实现的基础 接昨天的文章,我们使用构造函数创建对象的时候仍然存在一些问题 那就是所有的实例没法共用一个函数 这样无疑会造成极大的内存浪费 那么解决的办法是什么呢? 那就是通过对象的原型来实现 原型链 在JS中我们创建的每一个函数都有一个 prototype(原型)属性 该属性是一个指针指向一个对象,这个对象的用途是包含由特定类型所有实例的共享属性和方法 这个对象也就是我们常说的原型对象 原型链就是对象实例和对象的原型对象组成的继…
由于今天有点事,加上对象原型链的东西有点多,所以今天这篇就讲一个小的知识点吧 也算为明天的对象继承做铺垫 工厂模式 虽然使用对象字面量来创建一个对象十分地便捷,但是这个方法有一个显著的缺点 那就是如果我们需要为一个接口创建多个对象,那么将会产生大量的重复代码 所以工厂模式氤氲而生 所谓工厂模式,也就是让我们的代码成为一个工厂,通过这个工厂我们可以源源不断地产生同一产品 其大体实现如下 function createPerson(age,job,name){ var o = new Object(…
基本包装类 基本包装类这个概念或许有的小伙伴没有听说过 但是小伙伴们有没有想过,为什么基本数据类型的实例也有方法呢? 其实这些方法都来自基本包装类型 这是JS为了方便操作基础数据类型而创建的特殊引用类型 基本包装类有三种 1. Boolean类型 2. Number类型 3. String类型 执行过程 这三种基本包装类型的生命周期很短,只存在于代码执行的一瞬间 当这三种基本数据类型调用其基本包装类的方法时: 1.读取以上三种类型的基本数据类型时 2.创建一个基本包装类的实例 3.调用该实例上的…
什么是内置对象呢? js高级程序设计中给出的定义为:由ES规定不依赖于宿主环境的对象,这些对象在JS执行前就已经存在 前面我们介绍的引用类型都是内置对象 除了这些对象外ECMA还规定了两个单体内置对象:1.Global 2.Math Global对象 Global对象十分特别,从某种意义上来说他是一个背锅侠 因为凡是不属于任何对象的属性和方法最后都将成为Global对象的属性和方法 也就是说在JS中凡是全局变量和全局方法实际上都是Global对象的属性和方法(包括isFinite等方法也是) G…
事件对象 在触发DOM‘事件时,会产生一个事件对象 event 该对象包含着所有与事件有关的信息 所有浏览器都支持 event 对象但是支持的方式有所不同 DOM事件对象 兼容DOM的浏览器会将event对象传入事件处理程序中 如下所示: var btn = document.getElementByTagName("button")[0]; btn.onclick = function(event){ alert(event.type); //"click" }…
screen对象 screen对象应该是BOM对象中最不常用的对象了 其主要用于提供客户端的显示能力信息 包括浏览器外部显示的信息,和像素的宽高等 这个对象的主要用于检测客户端能力,一般不会影响功能 而且由于,该对象的许多属性基本上都是只读的,所以也没有太多可以操作的空间,毕竟这是由客户端硬件所决定的 下面和昨天一样只例举主流浏览器都支持的属性与方法 详见MDN 1.availHeight 屏幕像素总高度减去系统部件高度的值(即屏幕剩余高度) 2.availWidth 屏幕像素宽度减系统部件宽度…
window对象作为浏览器的全局对象.location对象保存了页面的url信息 那么navigator对象又有什么作用呢? navigator对象 该对象最早由 Netspace Navigator 2.0 引入,用于识别浏览器客户端的事实标准 在IE中以window.clientInformation.Opera中的window.opera提供了与navigator类似的信息 但是navigator对象在所有支持JS的浏览器中都有实现,只是对某些属性,各个浏览器的实现并不一致 下面例举的属性…
在JS中location是一个神奇的对象 它既是window对象的属性,也是document对象的属性 它的作用主要在于保存当前文档页面的信息,以及将 url 解析为独立的片段 location对象属性 1.hash 返回url中的 #后面的0个或多个字符,若 url 不包含#则返回空字符串 2.host 返回url中的服务器名称和端口号 如“localhost:8080” 3.hostname 返回url中不带端口号的服务器名称 4.href 返回当前加载页的完整 url 5.pathname…
今天讲一下window对象和浏览器导航,弹窗等有关的内容 导航和打开窗口 window.open() 用于导航到某个特定 url 该方法接收四个参数 1.url 2.窗口目标(当页面中有多个框架frame,用于指定哪个窗口打开第一个参数的url) 3.特性字符串(用于规定新窗口的相关特性) 4.新页面是否取代浏览器历史记录中当前页面 这个特性字符串有以下可选值 1.fullscreen 是否全屏(IE有效) 2.height 数值 3.left 数值 4.location 是否显示地址栏(该特性…