JS中对象相关的最重要的恐怕就是原型链了 原型链也是JS中对象继承的实现的基础 接昨天的文章,我们使用构造函数创建对象的时候仍然存在一些问题 那就是所有的实例没法共用一个函数 这样无疑会造成极大的内存浪费 那么解决的办法是什么呢? 那就是通过对象的原型来实现 原型链 在JS中我们创建的每一个函数都有一个 prototype(原型)属性 该属性是一个指针指向一个对象,这个对象的用途是包含由特定类型所有实例的共享属性和方法 这个对象也就是我们常说的原型对象 原型链就是对象实例和对象的原型对象组成的继…
由于今天有点事,加上对象原型链的东西有点多,所以今天这篇就讲一个小的知识点吧 也算为明天的对象继承做铺垫 工厂模式 虽然使用对象字面量来创建一个对象十分地便捷,但是这个方法有一个显著的缺点 那就是如果我们需要为一个接口创建多个对象,那么将会产生大量的重复代码 所以工厂模式氤氲而生 所谓工厂模式,也就是让我们的代码成为一个工厂,通过这个工厂我们可以源源不断地产生同一产品 其大体实现如下 function createPerson(age,job,name){ var o = new Object(…
继承是所有面向对象的语言最让人津津乐道的概念 许多面向对象的语言都支持两种实现继承的方式: 1.接口继承 2.实现继承 由于ECMAScript中没有函数签名,所以自然也是不支持接口继承 所以JS中能实现的也只能是实现继承,而实现继承主要是依靠原型链 至于原型链的构成在昨天的文章中也大概讲了一下 无非就是每个对象的实例都有一个[[Prototype]]的属性(在游览器中以__proto__来显式地支持此属性)指向了其构造函数的原型对象 每个对象都有一个这样的引用,就构成了原型链 原型链的顶端是O…
什么是内置对象呢? 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 是否显示地址栏(该特性…
ECMAScript是JS的核心 但是对于在浏览器中运行的JS,BOM显然才是真正的核心 我们知道JS是由三个部分组成的 BOM.DOM.ECMAScript 之前的文章我们主要介绍的是ECMAScript 也就是JS的核心语法 但是JS作为一种脚本语言,其创建的初衷不就是为了控制浏览器中的页面的表现形势嘛 所以JS与浏览器的交互由什么控制呢? 当然就是我们的BOM了(浏览器对象模型) BOM提供了一系列的对象用于访问浏览器的功能,由于各个厂商会按照各自的想法去拓展它 所以只有其中的一部分被标准…