zoukankan      html  css  js  c++  java
  • 201507010852_《Javascript权威指南(第六版)——判断值类型的type函数 、鸭式辩型》(P210-217)

    一. 类的扩充

    1. 只要扩充原型类,就能动态更新到实例。例如:xxx.prototype.do = function() {//...};

    2. 不建议采用污染JavaScript的方法,如:Object.prototype.methods = function() {//...};   采用《权威指南》9.8.1中的方法添加属性,如:Object.defineProperty(//...);

    3. 

    二. 类和类型

    1. isPrototypeOf();

    2. 

    三. constructor属性

    1. 判断值类型的type函数

    例如:

    function type(obj) {
    var t,c,n;
    //处理null值得情形
    if(obj === null) return "null";
    //NaN和与自己不等的两种情况
    if(obj !== obj) return "NaN";
    //不是object,就用这个值
    if(t = typeof(obj) !== "object") return t;
    //返回对象的类名,除非是Object
    if(c = classOf(obj) !== "Object") return c;
    //如果对象构造函数名字存在,则返回它
    if(obj.constructor && typeof obj.constructor === "function" && (n = obj.constructor.getName())) return n;
    return "Object";
    };   // 对classOf()、getName()需要定义

    四.  鸭式辩型

    function quacks(obj) {
    for(var i = 1; i < arguments.length; i++) {
    var arg = arguments[i];
    switch(typeof arg) {
    case 'string':
    if(typeof obj[arg] !== "function") return false;
    continue;
    case 'function':
    arg = arg.prototype;
    case 'object':
    for(var m in arg) {
    if(typeof arg[m] !== "function") continue;
    if(typeof obj[m] !== "function") return false;
    }
    }
    }
    return true;
    };

    var f = function fn(x) {return x*x}; alert(quacks(f));  // true

    前端-语言
  • 相关阅读:
    21.09.12模拟 P2809 hzwer 爱折纸
    21.09.13模拟 保存名画
    21.09.13模拟赛 魔法传输
    21.09.13模拟 分割金币
    21.09.13模拟 友谊值
    21.09.10模拟 朗格拉日计数
    21.09.10模拟 雷神领域
    P4551 最长异或路径
    P2894 [USACO08FEB]Hotel G
    NOIP复习(总结套路)
  • 原文地址:https://www.cnblogs.com/beesky520/p/4613534.html
Copyright © 2011-2022 走看看