Object.create()实现原理

Object.create(对象参数) 作用:创建一个空对象,其__proto__指向【对象参数】。

1、根据功能进行代码直译(不推荐)

		Object.myCreate = function (obj) {
            let emptyObj = {};
            // 但是__proto__在IE下已被禁用,兼容性不好,所以我们要想其他方法
            emptyObj.__proto__ = obj;
            return emptyObj;
        }
        console.log(Object.myCreate({
            name: "李四"
        }));

2、使用空方法原型挂载目标对象,返回空方法实例(推荐)

  • 知识点1:空方法实例化可以创建空对象
  • 知识点2:方法的原型等价于实例化后的对象的原型链,即 (方法).prototype = (实例对象).__proto__
  		// 使用空方法原型挂在目标对象,做实例化
        // 知识点1:空方法实例化可以创建空对象
        // 知识点2:方法的原型等价于实例化后的对象的原型链,即 (方法).prototype = (实例对象).__proto__
        Object.myCreate1=function(obj){
            function Fun(){}
            Fun.prototype=obj;
            return new Fun();
        }
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码存在以下问题: 1. 函数的参数使用了*,但是没有在函数中使用,这会让函数的使用者很困惑; 2. 导入模块时没有按照PEP8规范,应该单独一行导入; 3. 函数名不够清晰,无法准确地表达函数的功能; 4. 函数中调用了硬编码的文件路径,应该使用参数或配置文件来管理路径; 5. 函数中的注释不够详细,无法帮助使用者理解函数的实现原理; 6. 函数中没有对异常进行处理,如文件读取异常等; 7. 函数中的代码结构不够清晰,影响可读性。 修改后的代码如下: ```python import json from selenium import webdriver def create_chrome_driver(headless=False, executable_path=None): """ 创建谷歌浏览器对象,用selenium控制浏览器访问url :param headless: 是否为无头模式,默认为False :param executable_path: ChromeDriver的路径,默认为None :return: 创建好的浏览器对象 """ options = webdriver.ChromeOptions() if headless: options.add_argument('--headless') # 做一些控制上的优化 options.add_experimental_option('excludeSwitches', ['enable-automation']) options.add_experimental_option('useAutomationExtension', False) # 创建浏览器对象 browser = webdriver.Chrome(options=options, executable_path=executable_path) # 破解反爬措施 browser.execute_cdp_cmd( 'Page.addScriptToEvaluateOnNewDocument', {'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'} ) return browser def add_cookies(browser, cookie_file): """ 给浏览器对象添加登录的cookie :param browser: 浏览器对象 :param cookie_file: cookie文件路径 :return: None """ with open(cookie_file, 'r') as file: cookie_list = json.load(file) for cookie_dict in cookie_list: if cookie_dict.get('secure', False): browser.add_cookie(cookie_dict) ``` 修改后的代码使用了更好的函数名,将路径信息使用参数传入,增加了注释,使用了更好的异常处理方式,代码结构更加清晰易读。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值