【前端面试手撕题】call、bind、new、freeze、浅拷贝

FED11 _call函数

描述
请补全JavaScript代码,要求实现Function.call函数的功能且该新函数命名为"_call"。

DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <style>
       /* 填写样式 */
    style>
head>

<body>
    
    <script type="text/javascript">
        // 填写JavaScript
        Function.prototype._call=function(target=window){
            target['fn']=this
            const result=target['fn']([...arguments].shift())
            delete target['fn']
            return result
        }
    script>
body>

html>

FED12 Function.bind

描述
请补全JavaScript代码,要求实现Function.bind函数的功能且该新函数命名为"_bind"。

DOCTYPE html>
<html>
    <head>
        <meta charset=utf-8>
    head>
    <body>
    	
        <script type="text/javascript">
            // 补全代码
            Function.prototype._bind = function(target, ...arguments1) {   
                target['fn']=this
                return function(...arguments2){
                    return target['fn'](...arguments1.concat(arguments2))
                }
            }

            
        script>
    body>
html>

FED13 实现new操作符

描述
请补全JavaScript代码,要求实现new操作符的功能。

DOCTYPE html>
<html>
    <head>
        <meta charset=utf-8>
    head>
    <body>
    	
        <script type="text/javascript">
            const _new = function() {
                // 补全代码
                const object1={}
                const Fn=[...arguments].shift()
                object1.__proto__=Fn.prototype
                const object2=Fn.apply(object1,arguments)
                return object2 instanceof Object?object2:object1
            }
        script>
    body>
html>

FED14 Object.freeze

描述
请补全JavaScript代码,要求实现Object.freeze函数的功能且该新函数命名为"_objectFreeze"

DOCTYPE html>
<html>
    <head>
        <meta charset=utf-8>
    head>
    <body>
    	
        <script type="text/javascript">
            const _objectFreeze = object => {
                // 补全代码
                Object.preventExtensions(object);
                for(let key in object){
                    if(object.hasOwnProperty(key)){
                        Object.defineProperty(object,key,{
                            writable:false,
                            configable:false
                        })
                    }
                }
                return object
            }
        script>
    body>
html>

FED15 浅拷贝

描述
请补全JavaScript代码,要求实现一个对象参数的浅拷贝并返回拷贝之后的新对象。
注意:

  1. 参数可能包含函数、正则、日期、ES6新对象
DOCTYPE html>
<html>
    <head>
        <meta charset=utf-8>
    head>
    <body>
    	
        <script type="text/javascript">
            const _shallowClone = target => {
                // 补全代码
                if(typeof target==='object'&&target!=='null'){
                    let a=Array.isArray(target)?[]:{};
                    for(let i in target){
                        a[i]=target[i];
                    }
                    return a;
                }else{
                    return target;
                }
            }
        script>
    body>
html>

你可能感兴趣的:(前端,前端)