变态面试题

作者: 椋椋夜色 | 来源:发表于2019-05-27 21:56 被阅读0次

    <!DOCTYPE html>
    <html lang="zh-CN">

    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title> 变态面试题 </title>

        <script>
            // //------------------变态面试题---------------------
            // function Foo() {
            //     getName = function () {
            //         alert(1);
            //     };
            //     return this;
            // }
            // Foo.getName = function () {
            //     alert(2);
            // };
            // Foo.prototype.getName = function () {
            //     alert(3);
            // };
            // var getName = function () {
            //     alert(4);
            // };
    
            // function getName() {
            //     alert(5);
            // }
    
            // Foo.getName(); // ?
            // getName(); // ?
            // Foo().getName(); // ?
            // getName(); // ?
            // new Foo.getName(); // ?
            // new Foo().getName(); // ?
            // new new Foo().getName(); // ?
        </script>
        <script>
    
                var now = new Date();
            // 直接打印日期对象,相当于调用它的toString方法
            // console.log(now);
            // console.log(now.toString());
    
            //所以如果想看属性,就要用console.dir打印
            console.dir(now);
            // now.getDate(); //找的是Date.prototype里提供的方法
    
            // console.log(now.__proto__ === Date.prototype);
            // console.log(now.__proto__.__proto__  == Object.prototype);
            // console.log(now.__proto__.__proto__.__proto__);
    
            // console.log(now.__proto__);
            // function Person() {}
       
            
            // var arr = new Array(10, 20, 30, 40, 50);
    
            // // Array 原型
            // console.log(arr.__proto__ === Array.prototype); // true
            // // Object原型
            // console.log(arr.__proto__.__proto__ === Object.prototype); // true
            // // null
            // console.log(arr.__proto__.__proto__.__proto__); // null
         
            // console.log(Person.prototype.__proto__); // Object 原型
            // // Object 原型
            // console.dir(Person.__proto__); //true
            // console.log(Person.__proto__); //true
            // // null
            // console.log(Person.prototype.__proto__.__proto__ ); // null
    
            // console.log(Person.prototype); // Person 先找自身
            // console.log(Person.prototype.__proto__); // object 找构造函数的原型
            // console.log(Person.prototype.__proto__.__proto__); // null找
            // console.log(Person.prototype.__proto__.__proto__.__proto__); // 报错
    
            // console.log(arr.__proto__); // Array()
            // console.log(arr.__proto__.__proto__); // Object()
            // console.log(arr.__proto__.__proto__.__proto__); // null 
            // console.log(arr.__proto__.__proto__.__proto__.__proto__); // 报错
    
    
    
            // 原型: 当创建一个函数的时候, 函数自身会有一些属性的方法, 其中有一个属性叫prototype, 它就是原型。
            // 只要是函数都有原型
            // 原型是解决性能问题的。
            // 构造函数的原型, 只有它的实例化对象可以使用。
    
            // 对象 都有__proto__( 原型链)
            // 类 都有prototype( 原型)
            // 函数的三个角色: 1. 函数 2. 对象 3. 类
    
            // 换句话: 如果对象上没有; 还会( 通过自身的原型链) 找到构造函数的原型。 如果还没有会( 通过构造函数的原型链) 找到Object的原型 为止。 再没有就变量( undefined) 函数( 报错)。( 注意: 永远三步走, 自身- > 构造函数的原型 - > Object的原型)
        </script>
        
    
    
    </head>
    
    <body>
    
    
        <!-- <script src="../../Mymethod.js "></script> -->
        <script>
            // var wangjianlin = {
            //     house: {
            //         price: 10000000,
            //         adress: '洛杉矶'
            //     },
            //     car: {
            //         price: 5000000,
            //         brand: '劳斯莱斯幻影'
            //     }
            // };
            // //好男人构造函数
            // function GoodMan(wife) {
            //     this.wife = wife;
            // }
            // //每一个好男人都有会煮饭的方法.
            // GoodMan.prototype.ZhuFan = function () {
            //     console.log(this.wife + "我是好男人,我会煮饭和带娃...");
            // }
    
            // //实例化好男人对象.
            // var s1 = new GoodMan('林嫂');
            // s1.ZhuFan();
            // console.log(s1);
    
            // liang.extend(wangjianlin, GoodMan);
        </script>
    

    </body>

    </html>

    相关文章

      网友评论

        本文标题:变态面试题

        本文链接:https://www.haomeiwen.com/subject/jmaktctx.html