javascript - Object.create兼容问题
伊谢尔伦
伊谢尔伦 2017-04-11 11:23:07
[JavaScript讨论组]

在写object.create(obj)兼容代码时,怎么写的代码在ie8下还是运行不了,看MDN的兼容浏览器,上面说的ie9是可以使用object.create,那么写的兼容代码在ie8下怎么不行呢?

 Object.prototype.create = function(obj) {
    if (typeof obj != 'object') {//如果 obj 参数不是 nll 或一个对象值,则抛出一个 TypeError 异常。
        throw TypeError('Object prototype may only be an Object or null');
    }
    if(Object.prototype.create) {
        return Object.prototype.create; //浏览器支持就直接返回
    }else {
        alert(11);
        function Temp() {}//创建一个临时性的构造函数
        Temp.prototype = obj; //传入的参数作为构造函数的原型
        return new Temp(); //返回临时类型的一个新实例
    }
};
var a = Object.create({x: 1, y: 2});
alert(a.x);
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
高洛峰

你的逻辑写错了。

Object.prototype.create = function(){};

第一行就给Object.prototype.create指向了一个函数。
所以调用时,这if(Object.prototype.create)就判断已经有了create方法,直接返回了当前函数。

解决办法就是Object.prototype.createXXX = function(){};改个名字

黄舟
Object.prototype.create = Object.prototype.create || function(obj){};
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号