JavaScript 精髓整理篇(一)postby:http://zhutty.cnblogs.com

  废话篇头:

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

  这一系列的博客将总结所有关于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.

1 var o = new Object(  );          // 创建对象
2
3 o.x = 3.14;                      // 定义非继承的局部属性y
4
5 o.hasOwnProperty("x");           // 返回 true: x 是O的局部属性
6
7 o.hasOwnProperty("y");           // 返回 false: o 没有属性y
8
9 o.hasOwnProperty("toString");    // 返回 false: toString属性是继承的

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

 1 var o = new Object(  );                          // 创建一个对象
 2
 3 Object.prototype.isPrototypeOf(o)                // true: o 是一个对象
 4
 5 Function.prototype.isPrototypeOf(o.toString);    // true: toString 是一个函数
 6
 7 Array.prototype.isPrototypeOf([1,2,3]);          // true: [1,2,3] 是一个数组
 8
 9
10 //下面是执行同样测试的另一种方法
11
12 (o.constructor == Object);  // true: o was created with Object(  ) constructor
13
14 (o.toString.constructor == Function);  // true: o.toString is a function
15
16
17
18 /原型则对象本身于原型对象。下面的调用返回true
19
20 //说明函数继 Function.prototype和Object.prototyp属性.
21
22 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

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

时间: 2024-10-20 10:18:08

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

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

今天双十二,本又是剁手的一天.不知道今天为什么,好像很多感慨.工作快两年了,感觉时间好快.没有存款.....>_< 算了,进入正题吧.今天讲js的数组.数组是js中最基础的数据结构了. 主要讲讲数组实现栈,队列以及其他的基本操作.栈和队列都可以在数组头尾位置处理,所以,都有两种方式. 属性 1.length : 长度,表示数组元素的个数. 方法 1.实现栈,先进后出. 入栈:Array.unshift(obj) 在数组第一个元素插入数据 出栈:obj = Array.shift() 取出第一个

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

今天是2015-11-25,今天做了件很傻逼的事.在此向各位网友告诫,有时候做事宁愿武断也不要犹豫,犹豫是万恶之源,是失败之母.在此,向灿和说声抱歉.机会只有一次,且行且珍惜. 废话不多讲了,开篇吧.今天总结的内容是javascript的function, 涉及到function顺便讲讲this. Function 是javascript的函数,也是js的执行单元.函数是JavaScript的一种基本数据类型.注意,虽然可以用这里介绍的Function()构造函数创建函数对象, 但这样做效率不高

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

今天特别郁闷,怎么说呢,之前一直就用angular,然后这两天在入职,我们公司用的是avalon这东西,反正,一开始没时间去玩它,第一个任务就是封装个jq插件,实现一个小功能.反正呢,就是越写越郁闷.用过angular的同学在去用jq应该都会有这种感觉吧.多此一举,费事.主要是,jq去一个一个操作dom树,把我搞郁闷了,最后,插件好了,但在一个地方用了好几次,这下好了,出问题了.问题像是这样的,晒出来供大家吐槽. $.fn.PlaginName = function($){ //这个插件实现的内

javascript精髓篇之原型链维护和继承.

一.两个原型 很多人都知道javascript是原型继承,每个构造函数都有一个prototype成员,通过它就可以把javascript的继承演义的美轮美奂了.其实啊,光靠这一个属性是无法完成javascript的继承.我们在代码中使用的prototype完成继承在这里就不多说了.大家可以查一下资料.另外一个看不见的prototype成员.每一个实例都有有一条指向原型的prototype属性,这个属性是无法被访问到的,当然也就无法被修改了,因为这是维护javascript继承的基础. 1 //构

打造IE6的position:fixed整理篇

fixed真的是一个很好的属性.特别是做弹层的时候.可惜的是"国内主流浏览器"IE6大大不支持. 一般的我们都会通过CSS中的表达式来解决这个问题. ? 1 2 3 4 5 .fixed { position:absolute; left:expression(eval(document.documentElement.scrollLeft)); top:expression(eval(document.documentElement.scrollTop)) } 好吧,希望施主的钛合金

qsort函数、sort函数 (精心整理篇)

先说明一下qsort和sort,只能对连续内存的数据进行排序,像链表这样的结构是无法排序的. 首先说一下, qsort qsort(基本快速排序的方法,每次把数组分成两部分和中间的一个划分值,而对于有多个重复值的数组来说,基本快速排序的效率较低,且不稳定).集成在C语言库函数里面的的qsort函数,使用 三 路划分的方法解决排序这个问题.所谓三路划分,是指把数组划分成小于划分值,等于划分值和大于划分值的三个部分. 具体介绍:-^^ void qsort( void *base, size_t n

javascript 路线整理

前端开发很重要,编写脚本也不容易. 总结我以前的前端学习经历,基本是一团乱麻:css+javascript是在大三自学的,当时自己做课程设计,逼着自己在一个月之内,写了一个半成品的j2ee网站.当时,真有种:when you burn out, you would loose your enthusiasm. 之后,我花了很长时间才缓过来.但是,我的一丢丢的自信也是从那时积累起来的.当时,也只是遇到什么功能点,百度,google一下拿来就用,没有什么基本功.东拼西凑式地编写code,很乱. 后来

javascript之console篇

javascript中的console使用得当,将会事半功倍,对bug,性能等的跟踪,优化是个不错的利器! 1.基本日志消息打印: console.debug(msg); console.info(); console.warn(); console.error(); console.log(); 方法参数: msg 类似C语言的printf console.log("The number of %s is %d", mytext, myval) 变量替换具有五种变量类型: %s -

qsort函数、sort函数 (精心整理篇)(转载)

qsort函数.sort函数 (精心整理篇) 先说明一下qsort和sort,只能对连续内存的数据进行排序,像链表这样的结构是无法排序的. 首先说一下, qsort qsort(基本快速排序的方法,每次把数组分成两部分和中间的一个划分值,而对于有多个重复值的数组来说,基本快速排序的效率较低,且不稳定).集成在C语言库函数里面的的qsort函数,使用 三 路划分的方法解决排序这个问题.所谓三路划分,是指把数组划分成小于划分值,等于划分值和大于划分值的三个部分. 具体介绍:-^^ void qsor