【JavaScript面向对象编程】20160105(对象)
2016-01-05 11:31
656 查看
Function
1、函数的内建构造器是Function(),但不推荐这种方式构造函数,因为塔始终会以字符串的形式通过JavaScript的检查;下面三行代码是等效的: var sum = function (a,b){return a+b;}; function sum(a,b){return a+b;}; var sum = new Function ('a','b','return a+b;');
2、函数对象的属性
1)与其他对象不同的是,函数对象中含有一个构造器属性,其引用的就是Function()构造器函数;
2)也有一个length属性,用于记录该函数所拥有的的参数数量;
3)ECMA标准之外的属性caller,返回一个调用该函数对象的外层函数引用
4)函数对象中最重要的是prototype属性
每个函数的prototype属性中都包含了一个对象;
prototype只有在该函数是构造器时才会发挥作用;
该函数创建的所有对象都持有一个该prototype属性的引用,可以将其当作自身属性来使用
3、Function对象的方法
所有的Function对象都是继承自父级对象Object的,默认拥有父级对象的所有方法;
1)toString(),可得到该函数的源代码,但是内建函数.toString(),只会得到【native code】
eval.toString(); >>>"function eval(){ [native code] }"
2)call(),如果我们没有将对象传递给首参数,或者传递给他的是null,他的调用对象会被默认为全局对象,call(对象,参数1,参数2…)
var some_obj = { name : 'cyrus', say : function(who) { return 'wrecking'+who+'ball'+this.name; } } >some_obj.say('happy'); >>>"wreckinghappyballcyrus" my_obj = { name : 'together script' }; some_obj.say.call(my_obj,'Party'); >>>"wreckingPartyballtogether script"
3)apply(),工作方式与call()相同,不同点是参数传递形式为apply(对象,[参数1,参数2…])
4)arguments对象,是一个类似数组的对象。
arguments的callee属性,该属性引用的是当前被调用的函数对象,也就是说:
function f(){ return arguments.callee; } f(); >>>f()
可以通过arguments.callee实现匿名函数的递归调用
( function(count){ if(count < 5){ alert(count); arguments.callee(++count); } } )(1) >>>alert4次,分别为1,2,3,4
Boolean (内建对象—数据封装类对象)
1、Boolean()构造器,所创建的对象并没有多少实用性,因为他没有提供来自父级对象以外的任何方法 和属性//创建一个 对象 b,而不是一个基本的布尔值 var b = new Boolean(); typeof b; >>>"object" typeof b.valueOf(); >>>"boolean" b.valueOf(); >>>false
2、Boolean()作为一般函数,比较实用。可以将一些非布尔值转换为布尔值。
Boolean('test'); >>> true Boolean(''); >>>false Boolean({}); >>>true var b1 = new Boolean(true); b1.valueOf(); >>>true var b2 = new Boolean(false); b2.valueOf(); >>>false Boolean(b1); >>>true Boolean(b2); >>>true //所有的对象都属于TRUTHY值
Number(内建对象—数据封装类对象)
1、作为一般函数时,会试图将任何值转换为数字,与parseInt(),parseFloat()的作用基本相同2、作为构造器函数时(new Number();),汇创建一个对象
3、Number()函数中,有一些不可更改的内置属性
Number.MAX_VALUE; >>>1.7976931348623157e+308 Number.MIN_VALUE; >>>5e-324 Number.POSITIVE_INFINITY; >>>Infinity Number.NEGATIVE_INFINITY; >>>-Infinity Infinity; >>>Infinity; -Infinity; >>>-Infinity; NaN; >>>NaN;
4、Number对象提供了三个方法
1)toFixed()
var n = new Number(123.456); n.toFixed(1); >>>"123.5"
2)toPrecision()
n.toPrecision(); >>>"1.23456"
3)toExponential()
n.toExponential(); >>>"1.23456e+2"
还有4)toString()方法,特别之处是有一个可选的radix参数(默认值是10)
var n = new Number(255); n.toString(); >>>"255" n.toString(10); >>>"255" n.toString(16); >>>"ff" (3).toString(2); >>>"11" (3).toString(10); >>>"3"
String(内建对象—数据封装类对象)
1、String对象实际上就是一个字符数组var pri = 'hello'; typeof pri; >>>"string" var obj = new String('world'); typeof obj; >>>"object" obj[0]; >>>"w" obj.length >>>5 obj.valueOf(); >>>"world" obj.toString(); >>>"world" obj+""; >>>"world"
2、String中值得关注的方法
1)toUpperCase() toLowerCase()字符串大小写
2)charAt()返回指位置的字符,与中括号[]的作用相当 ;如果charAt(index),index不存在,该方法返回一个空字符串
3)indexOf(),实现字符串内部搜索,返回第一次匹配位置的索引值。indexOf(‘x’,index),返回第index个x
4)lastIndexOf(),从字符串末端开始搜索
5)slice(index1,index2):index2为区间的末端位置,而非长度
slice(index1,-index2) <=>slice(index1, .length -index2)
6)substring(index1,index2):index2为区间的末端位置,而非长度
substring(index1, - index2) <=>substring (index1,0)
7)split(),根据传递内容分割字符串成数组。可视为join()(将一个数组合并成字符串)的反操作
var s = 'couch potato'; s.split(""); >>>["couch","potato"];
8)concat():追加字符串,类似 +
相关文章推荐
- javascript 阻止多次点击造成的轮播混乱
- js中函数参数值传递和引用传递
- js中零碎点的整理
- Implement strStr--JavaScript
- js中arguments是什么
- 一个js文件引入其他多个常用js文件的使用方法及适用范围
- js 对url字符转译全解
- Json学习总结(1)——Java和JavaScript中使用Json方法大全
- 通过 jstat -gcutil 来学习JVM 内存分配策略与 GC 发生时机
- Gson操作json
- Hammer.js 手势事件
- javascript 继承
- JavaScript基本概念(二)--- 变量
- json 互转Datatable
- javascript 块内函数
- jsp中的c函数标签日期,数字格式化的问题
- 详解js变量、作用域及内存
- JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
- JS常见问题之为什么点击弹出的i总是最后一个
- selenium2支持无界面操作(HtmlUnit和PhantomJs)