function type(obj) { return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase() }
实现type函数用于识别标准类型和内置对象类型,语法如下:
var t = type(obj);
使用举例如下:
- var t = type(1) // t==="number"
- var t = type(new Number(1)) // t==="number"
- var t = type("abc") // t==="string"
- var t = type(new String("abc")) // t==="string"
- var t = type(true) // t==="boolean"
- var t = type(undefined) // t==="undefined"
- var t = type(null) // t==="null"
- var t = type({}) // t==="object"
- var t = type([]) // t==="array"
- var t = type(new Date) // t==="date"
- var t = type(/\d/) // t==="regexp"
- var t = type(function(){}) // t==="function"
ES5中定义的Object.create(proto)方法,会创建并返回一个新的对象,这个新的对象以传入的proto对象为原型。
语法如下:
Object.create(proto) (注:第二个参数忽略)
proto —— 作为新创建对象的原型对象
使用示例如下:
var a = Object.create({x: 1, y: 2});
Object.create = Object.create || function(obj) { var F = function() {}; F.prototype = obj; return new F(); }
Object.create在某些浏览器没有支持,请给出Object.create的兼容实现。
Function.prototype.bind = function(obj) { var aa = this, args = arguments; return function() { aa.apply(obj, Array.prototype.slice.call(args, 1)) } }
function fibonacci(n) { if (n == 0) { return 0; } else if (n == 1) { return 1; } else { return (arguments.callee(n - 1) + arguments.callee(n - 2)); } }
function search(arr,dst){ var type = Object.prototype.toString.call(arr).slice(8,-1); if(type != ‘Array‘){ throw TypeError(‘Object prototype may only be an Array‘) } var len = arr.length; if( !len){ return -1; } var l = 0; var h = len - 1; while(l <= h){ var m = Math.floor( (h+l)/2 ); if( arr[m] == dst ){ return m; }else if( dst < arr[m] ){ //左半部分 h = m - 1; }else{ //右半部分 l = m + 1; } } } var arr = [1,2,4,6,7,9,19,20,30,40,45,47]; alert( search(arr,45) )
时间: 2024-11-12 03:41:17