废话篇头:

  由于工作关系,所以写博文的时间有那么点~~,其实是输入法太懒了,都是输入法的错~~

  这一系列的博客将总结所有关于JavaScript语言的精髓,适合0基础到大师级别人物阅读。

  《JavaScript 精髓整理篇》将系统整理Javascript语言精要。欢迎们加入我信息栏中的qq群,我们可以一起探讨。qq群:164858883

  

  精华不容错过:

  随着nodejs的火爆,以及移动开发的热潮,js的地位已经火速上涨。

  JavaScript 精要可以从下面11个关键类型入手:Object、Arguments、Array、Boolean、Date、Error、Function、Math、Number、RegExp、String

  下面将逐个讲解,首先从Object开始

  学习Java和c#的朋友明白,Object是所有类的父类。Js 中的 Object 是超类对象,从面向对象的层面上讲,它也是js中所有类的父类。他下面的小罗罗有以下:

  

Object 含有所有JavaScript对象的特性的超类
Object.constructor 对象的构造函数
Object.hasOwnProperty( ) 检查属性是否被继承
Object.isPrototypeOf( ) 一个对象是否是另一个对象的原型
Object.propertyIsEnumerable( ) 是否可以通过for/in循环看到属性
Object.toLocaleString( ) 返回对象的本地字符串表示
Object.toString( ) 定义一个对象的字符串表示
Object.valueOf( ) 指定对象的原始值

  逐个解释Object的小罗罗:

    1、构造器:new Object() 声明一个空对象

        new Object(value) 声明一个带初始化的对象,value的值可以是 Number 、Boolean、String等类型。

    2、构造属性:Object.constructor 这个是用于检测Object的类型,功能与typeof 如出一辙。e.g.       

        var a = new Object(true)
        alert(a.constructor == Boolean)// 输出true

    3、判断继承属性: Object.hasOwnProperty (propname) //返回boolean, propname属性名, e.g.

 var o = new Object(  );          // 创建对象

 o.x = 3.14;                      // 定义非继承的局部属性y

 o.hasOwnProperty("x");           // 返回 true: x 是O的局部属性

 o.hasOwnProperty("y");           // 返回 false: o 没有属性y

 o.hasOwnProperty("toString");    // 返回 false: toString属性是继承的

    4、原型判断:Object.isPrototypeOf(o) //返回boolean类型,o是任意对象。JavaScript对象继承了原型对象的属性。一个对象的原型是通过用于创建并初始化该对象的构造函数的prototype属性引用的。isPrototypeOf()方法提供了判断一个对象是否是另一个对象原型的方法。该方法可以用于确定对象的类。e.g.

 var o = new Object(  );                          // 创建一个对象

 Object.prototype.isPrototypeOf(o)                // true: o 是一个对象

 Function.prototype.isPrototypeOf(o.toString);    // true: toString 是一个函数

 Array.prototype.isPrototypeOf([1,2,3]);          // true: [1,2,3] 是一个数组

 //下面是执行同样测试的另一种方法

 (o.constructor == Object);  // true: o was created with Object(  ) constructor

 (o.toString.constructor == Function);  // true: o.toString is a function

 /原型则对象本身于原型对象。下面的调用返回true

 //说明函数继 Function.prototype和Object.prototyp属性.

 Object.prototype.isPrototypeOf(Function.prototype);

  

    5、转换成字符串:Object.toString()

  这里的方法toString()并不是在JavaScript程序中经常显示调用的那个toString()方法。它是在对象中定义的一个方法,当系统需要把对象转换成字符串时就会调用它。

当在字符串环境中使用对象时,JavaScript系统就会调用toString()方法把那个对象转换成字符串。例如,假定—个函数期望得到的参数是字符串,那么把对象传递给它时,系统就会将这个对象转换成字符串:

alert(my_object); 

同样,在用运算符“+”连接字符串时,对象也会被转换成字符串:

var msg = 'My object is: ' + my_object; 

调用方法toStrlng()时不给它传递任何参数,它返回的应该是一个字符串。要使这个字符串有用,它的值就必须以调用toString()方法的对象的值为基础。

当用JavaScript自定义一个类时,为这个类定义一个toString()方法很有用。如果没有给它定义toString()方法,那么这个对象将继承Object类的默认toString()方法。这个方法返回的字符串形式如下:

[object class] 

这里,class是一个对象类,其值可以是“Object”、“String”、“Number”、“Function”、 “Window”、“Document”,等等。这种行为有时对确定未知对象的类型或类有用。但由于大多数对象都有自定义的tostring()版本,所以必须明确地对对象o调用 Object.toString(),代码如下所示:

Object.prototype.toString.apply(o); 

注意,这种识别未知对象的方法只适用于内部对象。如果你定义了自己的对象类,那么它的类是“Object”。在这种情况下,可以用Obiect.constructor属性获取更多有关对象的信息。

在调试JavaScript程序时,toString()方法非常有用,使用它可以输出对象,查看它们的值。因此,为你创建的每个对象类都定义toString()方法很有用。

虽然tostring()方法通常由系统自动调用,但你也可以自己调用它。例如,在JavaScript不能自动把对象转换成字符串的环境中,可以明确地调用toString()方法来实现这一点:

y = Math.sqrt(x);       // 计算一个数

ystr = y.toString(  );  // 转换为—个字符串

注意,在这个例子中,数字具有内部的toStrlng()方法,可以用该方法进行强制性的转换。

在其他的环境中,即使JavaScript可以自动地进行转换,你也可以调用toString()方法,因为对toString()的明确调用可以使代码更加清晰:

alert(my_obj.toString(  )); 

  6、转换为本地字符串:Object.toLocaleString()用法和toString()差不多。
  该方法用于返回对象的字符串表示,本地化为适合本地的形式。Object类提供的默认的toLocaleString()方法只调用toString()方法,返回非本地化的字符串。但其他类(包括Array、Date和Number)定义了自己的toLocaleString()版本,指定本地化字符串的转换。在定义自己的类时,也可以覆盖该方法。

  这一系列将持续更新,转载请注明出处:http://zhutty.cnblogs.com

  如果对您有用,请不吝捐赠:支付宝

JavaScript 精髓整理篇之一(对象篇)postby:http://zhutty.cnblogs.com的更多相关文章

  1. Javascript 精髓整理篇之二(函数篇)postby:http://zhutty.cnblogs.com

    今天总结的内容是javascript的function, 涉及到function顺便讲讲this. Function 是javascript的函数,也是js的执行单元.函数是JavaScript的一种 ...

  2. Javascript 精髓整理篇之三(数组篇)postby:http://zhutty.cnblogs.com

    今天讲js的数组.数组是js中最基础的数据结构了. 主要讲讲数组实现栈,队列以及其他的基本操作.栈和队列都可以在数组头尾位置处理,所以,都有两种方式. 属性 1.length : 长度,表示数组元素的 ...

  3. 【JavaScript学习整理】DOM对象(location history screen navigator)

    DOM: 描述网页各个组成部分之间的关系. parentNode: 父节点 childNode: 子节点 firstChild: 第一个子节点 lastChild: 最后一个子节点 nextSibli ...

  4. javascript笔记整理(DOM对象)

    DOM--document(html xml) object modle,document对象(DOM核心对象),document对象是 Window 对象的一部分,可通过window.documen ...

  5. javascript笔记整理(window对象)

    浏览器对象模型 (BOM--Browser Object Model),window对象是BOM中所有对象的核心 A.属性 1.(位置类型-获得浏览器的位置) IE:window.screenLeft ...

  6. javascript笔记整理(字符串对象)

    一.属性 1.length——字符串的长度(不区分中英文) var a="chen陈"; alert(a.length); //结果:5 2.constructor——对象的构造函 ...

  7. javascript笔记整理(数组对象)

    1.属性 a.length--设置或返回数组元素的数目 var a=[1,2,3,45,5]; alert(a.length=6) 结果:6 alert(a[5]) 结果:undefined b.co ...

  8. 轻量级mvvm Web开发框架 postby:http://zhutty.cnblogs.com

    今天特别郁闷,怎么说呢,之前一直就用angular,然后这两天用的是avalon这东西,反正,一开始没时间去玩它,第一个任务就是封装个jq插件,实现一个小功能.反正呢,就是越写越郁闷.用过angula ...

  9. 深入理解javascript对象系列第一篇——初识对象

    × 目录 [1]定义 [2]创建 [3]组成[4]引用[5]方法 前面的话 javascript中的难点是函数.对象和继承,前面已经介绍过函数系列.从本系列开始介绍对象部分,本文是该系列的第一篇——初 ...

随机推荐

  1. CCSpawn使用CCRepeatForever无效

    在使用CCSpawn中加入CCRepeatForever,但却无法使用CCRepeatForever的效果. CCActionInterval* action =(CCActionInterval*) ...

  2. border-radius的用法与技巧总结

    border-radius属性用法重点罗列 border-radius: none | <length>{1,4} [/<length>{1,4}] ? .如果存在反斜杠/,则 ...

  3. 在Java中兼容Windows和Linux的路径处理

    Linux中的路径使用'/',而Windows下正好相反'\',Java提供了以系统属性的方式获取路径分隔符: System.getProperty("file.separator" ...

  4. NHibernate之映射文件配置说明(转载2)

    六.鉴别器   在"一棵对象继承树对应一个表"的策略中,<discriminator>元素是必需的, 它定义了表的鉴别器字段. 鉴别器字段包含标志值,用于告知持久化层应 ...

  5. SqlServer 开启或关闭数据库主键自增

    可用作删除一行主键数据库,在还原数据行,或者删掉后,被伤处的主键还可以利用 --开启当前表的可复制功能,仅在当前回话中有效 SET IDENTITY_INSERT  dbo.PDAUserInfo O ...

  6. iPhone手机的屏幕尺寸、分辨率及适配

    1.iPhone尺寸规格 设备 iPhone 宽 Width 高 Height 对角线 Diagonal 逻辑分辨率(point) Scale Factor 设备分辨率(pixel) PPI 3GS ...

  7. cmd编译运行Java文件详解

    ①准备工作 首先用记事本编写HelloWorld.java放至G:\Javaspace路径 public class HelloWorld{ public static void main(Strin ...

  8. jquery实现简单鼠标经过图片预览效果

    html结构:<div class="prebtn"><img src=""/></div> css代码:#preview{ ...

  9. Flask学习记录之Flask-Moment

    Moment.js 是一个简单易用的轻量级JavaScript日期处理类库,提供了日期格式化.日期解析等功能.它支持在浏览器和NodeJS两种环境中运行.此类库能够 将给定的任意日期转换成多种不同的格 ...

  10. HTML&CSS基础学习笔记1.23-表单的文本域和下拉列表

    文本域 <textarea>标签定义多行的文本输入控件. 平时在网页上的一些需要输入比较多的内容的输入框,比如回复帖子,回答问题等,都可以用<textarea>标签. < ...