摘要: 一.类和类型 在传统的面向对象的编程语言中,有很好的方法能够判断一个实例对象属于哪个类,但是在js中,并没有完美方法来实现这个功能,但是还是有几种方法来弥补,下面介绍3种: a.instanceof运算符和isPrototype()方法, instanceof操作符的左操作数是待检测其类的对象,右操作数是定义类的构造函数,如果o继承自c.prototype,则表达式 o instanceof c 返回true.,此外当o继承自一个也继承自c.prototype的对象时也会返回true;同样的isPrototype()方法也能实现类似功能,即在多个执行上下文场景中无法正常工作。 但是着两... 阅读全文
posted @ 2014-01-12 20:38 山贼一名 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 之前比较忙,再加上家里发生了些不开心的事情,也就没什么心情看书,昨天加了一天班,今天终于可以静下心来写点东西一.类和原型 在JavaScript中,类的所有实例对象都从同一个原型对象上继承属性,因此原型对象是类的核心,这个在之前几篇中已经提到过,现在我们来看两个例子,着两个例子实现了同样的效果: 1 例一: 2 function inherit(p){ /;/这个函数是用来创建对象的,之前已经写到过了 3 if(p == null) throw TypeError(); 4 if(Object.create) return Object.create(p); 5... 阅读全文
posted @ 2014-01-12 15:09 山贼一名 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 前两篇主要是写了关于JavaScript对象中属性的特性,在这篇中让我们来看看对象的属性,对象共有3个比较重要的与之相关的属性,分别是原型、类、可扩展性。一.原型属性 原型这个概念已经在第一篇中解释过了,它是JavaScript对象继承的核心。对象的原型属性是用来继承属性的,它在对象创建指出就被设置好了,回想下第一篇中介绍的创建对象的3种方法,第一种通过对象直接量创建的对象使用Object.prototype作为它的原型,其实等价于使用Object()这个构造函数来创建对象;第二种通过new和构造函数创建的对象使用构造函数的prototype属性作为它的原型;第三种通过Object.... 阅读全文
posted @ 2013-12-23 23:12 山贼一名 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 为了看着不是那么累,本屌还是决定宁愿把本系列多写几篇,每篇控制在一定长度,也方便看官们阅读。一.属性特性 上一篇中提到“属性特性”这个概念,一个普通的数据属性具有:可写性、可枚举性、可配置性,如果把它的值也看成特性的话,即一个普通的数据属性就是:值(value)、可写性(writable)、可枚举性(enumerable)、可配置性(configurable);由于存取器属性没有可写性,因此存取器的特性可以分为:读取、写入、可枚举性和可配置性。 为了实现属性特性的查询和操作,ECMAScript5中定义了一个名为“属性描述符”的对象,用来代表那4个特性,通过调用Object.ge... 阅读全文
posted @ 2013-12-23 21:58 山贼一名 阅读(353) 评论(0) 推荐(0) 编辑
摘要: 上文中提到JavaScript对象是属性的集合,本结就来谈谈对象的属性以及对属性的操作。个人认为,JavaScript中对象的属性比其他语言复杂很多,由于本屌的主业是PHP,因此当初看书时候也花了很多时间才把这部分内容给理清了。一.JavaScript属性概述 跟传统的面向对象不太一样,JavaScript对象是动态的,即可以随时对一个js对象新增或删除属性,对属性最常见的操作是设置、查找、删除、检测、枚举。除此以外,每个属性还有一些与之相关的值,称为“属性特性”:可写:表明该属性是否可以设置该属性的值;可枚举:表明是否可以通过for/in循环返回该属性;可配置:表明是否可以删除或创... 阅读全文
posted @ 2013-12-22 21:08 山贼一名 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 最近看了由大卫编写、淘宝前端团队翻译的《JavaScript权威指南》第六版,对于js的对象有了一个初步的认识,写这几篇文章的目的第一也是巩固下自己学习的东西,再者也希望能整理下js对象的基本语法和用法当做砖头抛出去。一.JavaScript的整体概述 对象是JavaScript的基本数据类型,可以把JavaScript对象看成是属性的无续集合(看有点像PHP中的关联数组),每个属性都是一个键值对,除了字符串、数字、布尔值、null、undefined外,都是对象。 在JavaScript中,对象可以分成3类: 内置对象:即由ECMAScript规范定义的对象或类,如数组、函数、... 阅读全文
posted @ 2013-12-22 19:16 山贼一名 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 1.用display:none来隐藏元素的时候不会保留元素本来的位置,用visibility:hidden则不会2.用margin:auto可以使一个元素居中显示3.当元素宽度超过浏览器宽度时浏览器会出现水平滚动条,此时可是使用max-width代替width,max-width可以自适应浏览器宽度,支持IE7+及其他主流浏览器4.当在计算元素宽度的时候,边框的长度和内边距也会被计算在内,这样的话做起来会比较麻烦,用以下这段代码可以解决这个问题*{ -webkit-box-sizing:border-box; -moz-box-sizing:border-box; ... 阅读全文
posted @ 2013-12-17 16:48 山贼一名 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 最近一直在看《javascript权威指南》,看到数组那一章的时候就跟Php的有点混掉了,索性自己整理一份出来,也算对php基础的巩固吧《javascript权威指南》中共提到了ECMAscript3中定义的12个和ECMAscript中新增的9个:序号js中的函数php中的类似函数作用1join()implode()把一个一维数组转为一个字符串2.reverse()array_reverse()将数组中的元素颠倒顺序3sort()sort()对数组进行排序4concat()array_merge()拼接数组5slice()array_slice()截取数组,返回被截取的部分6splice() 阅读全文
posted @ 2013-12-13 11:26 山贼一名 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 1.对象生成方法:var obj={}; //第一种var obj = new Object(); //第二种 2.读取一个属性有两种方法,一种是使用点运算符,一种是使用方括号运算符var obj = { p : 'hello world',};o.p //点运算符o['p'] //方括号运算符 ,键名必须用引号 如果o[p]则表明p是个变量,等价于o[undifined],返回undefined3.上面的特性可以用来检查一个变量是否被声明if(a){ a+=1; }//报错 a is not definedif(window.a){ a+=1;}//u... 阅读全文
posted @ 2013-09-23 16:27 山贼一名 阅读(245) 评论(0) 推荐(1) 编辑
摘要: 1.如果已经声明了一个变量,但是没有对变量赋值,则该变量的值为undefined,即还没有确定的数据类型2.变量提升:js引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行的运行,这造成的结果就是所有的变量声明语句,都会被提升到代码的头部,这就叫变量提升,如console.log(a);var a = 1 ;上面的代码在声明变量a之前就使用它,这是一种错误的做法,但不会报错,其实真正运行的是下面的代码var a;console.log(a);a = 1;最后的结果是现实undefined,表示变量已声明,但还未赋值3.js对标志符的大小写敏感,所以a和A是两个不同的标志符4.j 阅读全文
posted @ 2013-09-06 15:26 山贼一名 阅读(234) 评论(0) 推荐(0) 编辑