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

    前端-语言
  • 相关阅读:
    2.配置范例站点站点
    nginx 安装配置+清缓存模块安装
    1.1nginx安装
    1.linux源码安装nginx
    python实现免密码登录lunx服务器
    实现利用公钥私钥免密码登录Linux服务器
    Codeforces Beta Round #61 (Div. 2)
    Codeforces Beta Round #59 (Div. 2)
    Codeforces Beta Round #57 (Div. 2)
    Codeforces Beta Round #55 (Div. 2)
  • 原文地址:https://www.cnblogs.com/beesky520/p/4613534.html
Copyright © 2011-2022 走看看