javascript封装判断全数据类型方法, toString方法, 对象的枚举(in, instanceof, hasOwnProperty的用法), arguments类数组属性

知识点

  • toString方法
    javascript封装判断全数据类型方法, toString方法, 对象的枚举(in, instanceof, hasOwnProperty的用法), arguments类数组属性_第1张图片
    打印出来的是”成哥很帅”, 证明出来数组打印时调用出来的是toString方法
  • 判断数组和对象
function isArrayOrObject(target) {
    var toStr = Object.prototype.toString,
        arrStr = '[object Array]';

        if(toStr.call(target) == arrStr) {
            return 'this is Array';
        }else{
            return 'this is Object';
        }
}

这样可以略过数组和对象本身的toString进而执行Object的toString方法

  • 判断全数据类型函数
function type(target) {
    var typeStr = typeof(target),
        toStr = Object.prototype.toString,
        objStr = {
            "[object Object]" : "_objectObject_",
            "[object Array]" : "_arrayObject_",
            "[object Number]" : "_numberObject_",
            "[object Boolean]" : "_booleanObject_",
            "[object String]" : "_stringObject_"
        }
    if(target === null){
        return null;
    }else if(typeStr === "function"){
        return "function";
    }
    if(typeStr !== "object"){
        return typeStr;
    }else{
        return objStr[toStr.call(target)];
    }
}

注意判断对象类型时, 有一个简单的方法为 object.prototype.toString.call(对象名)

  • 正常计算数字大概小数点后15位

对象的枚举

  • for in
    例: 遍历对象里面的属性
var obj = {
    name : 'acx',
    age : 12,
    sex : 'female'
}
for(var prop in obj){
    console.log(obj[prop]);
}

也可以把var prop写在外面, var prop; for(prop in obj){ }
但要注意: 最后一句为 obj[prop]
1 . hasOwnProperty

遍历自身属性, 继承的不显示

Person.prototype.name = 'acx';
function Person() {
    this.age = 132;
    this.sex = "female";
}
var person = new person();
for(var prop in person) {
    if(person.hasOwnProperty(prop)) {
        console.log(person[prop]);
    }
}

2 . in

看看一个属性是不是这个对象的属性, 是的话返回true

var obj = {
    name : 'acx',
    age : 12,
    sex : 'female'
}
console.log('name' in obj);

注意: 属性名称为字符串
3. instanceof
看看前面的对象是不是后面构造出来的, 是的话返回true

function Person() {

}
var person = new Person;
person instanceof Person;
  • a instanceof b
    判断a的原型链上, 有没有b的原型

arguments//类数组

  • arguments.callee
    指向函数的本身
    javascript封装判断全数据类型方法, toString方法, 对象的枚举(in, instanceof, hasOwnProperty的用法), arguments类数组属性_第2张图片
    javascript封装判断全数据类型方法, toString方法, 对象的枚举(in, instanceof, hasOwnProperty的用法), arguments类数组属性_第3张图片

用处:

var num = (function (n){
    if(n == 1) {
        return 1;
    }
    return n * arguments.callee(n - 1);
}(100))

立即执行函数时返回函数名

  • func.caller
    打印出执行caller的那个函数
function demo() {
    test();
}
function test() {
    console.log(test.caller)
}
demo();

javascript封装判断全数据类型方法, toString方法, 对象的枚举(in, instanceof, hasOwnProperty的用法), arguments类数组属性_第4张图片

你可能感兴趣的:(JavaScript,javascript入门到进阶)