前端笔试题(03)

问题一


1. 难度系数: ★★★
2. 技术点:
  1). this
  2). 闭包

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>08_阿里3</title>
</head>
<body>
<script type="text/javascript">
  var name = "A"
  var object = {
    name: "B", 
    getNameFunc: function () {  //定义方法
      return function () {
        return this.name  // this是谁?  window(默认的执行方式)即A
      }
    }
  }
  console.log(object.getNameFunc()())  //?  A  得到当前的函数,接着去执行的是默认的执行方式
  var name2 = "A"
  var object2 = {
    name2: "B",
    getNameFunc: function () {
      var that = this  // 缓存this     当前this 是 object2
      return function () {
        return that.name2
      }
    }
  }
  console.log(object2.getNameFunc()()) //?   B  执行的是that,即object2,故为B
</script>
</body>
</html>

输出:

问题二

1. 难度系数: ★★★
2. 技术点:
  1). 原型与原型链
  2). 对象属性查找

 

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>09_百度2</title>
</head>
<body>

<script type="text/javascript">
  /*
  测试题1
   */
  function A () {    //构造函数A
  }
  A.prototype.n = 1  //给A的原型上添加属性n

  var b = new A()    //根据A函数创建实例b

  A.prototype = {    //给A的原型指定赋值新的对象,对象有两个属性 n 和 m
    n: 2,
    m: 3
  }
  var c = new A()    //创建新的实例 c

  console.log(b.n, b.m, c.n, c.m) // ? ? ? ?
</script>
</body>
</html>

输出:

b.n, b.m 在  A.prototype.n = 1 中查找,故输出为 1 和 undefined  

c.n, c.m 在  A.prototype = {    n: 2,m: 3 } 中查找,故输出为 2 和3  

构造函数_实例对象_原型

原型与原型链(详细)

扫描二维码关注公众号,回复: 2874107 查看本文章

问题三

1. 难度系数: ★★★★
2. 技术点:
  1). 原型与原型链
  2). 实例对象,构造函数,Object, Function的关系

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>10_京东1</title>
</head>
<body>
<script type="text/javascript">
  var F = function(){}   //定义函数 F
  Object.prototype.a = function(){  //给 Object 的原型添加方法 a
    console.log('a()')
  }
  Function.prototype.b = function(){ //给 Function 的原型添加方法 b
    console.log('b()')
  }
  var f = new F()   //创建 F 的实例 f
  F.a() // ?  // F (function)里面没有 a ,去原型里面找,Object 是它的原型 ,Function也是它的原型
  F.b() // ?
  f.a() // ?
  f.b() // ?  //Function 并不是 f 的原型,f 是实例对象,其原型有Object,但没有Function
</script>
</body>
</html>

输出: f.b()  Function 并不是 f 的原型,故报错

问题四

1. 难度系数: ★★★★
2. 技术点:
  1). 变量提升
  2). this
  3). 运算符优先级
  4). 原型与原型链
  5). 全局变量污染

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>11_阿里4</title>
</head>
<body>
<script type="text/javascript">

  function Person() {
    getAge = function () {
      console.log(10)
    }
    return this
  }

  Person.getAge = function () {
    console.log(20)
  }

  Person.prototype.getAge = function () {
    console.log(30)
  }

  var getAge = function () {
    console.log(40)
  }

  function getAge() {
    console.log(50)
  }
  Person.getAge() // ?
  getAge() // ?
  Person().getAge() // ?
  getAge() // ?
  new Person.getAge() // ?
  new Person().getAge() // ?

</script>
</body>
</html>

输出:

问题五


1. 难度系数: ★★★★★
2. 技术点:
  1). 闭包
  2). 作用域与作用域链
  3). 变量查找

 

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>12_滴滴1</title>
</head>
<body>

<script type="text/javascript">
  function fun(n, o) {
    console.log(o)
    return {
      fun: function (m) {
        return fun(m, n)
      }
    }
  }

  // 测试一: undefined ? ? ?
  var a = fun(0)
  a.fun(1)
  a.fun(2)
  a.fun(3)

</script>
</body>
</html>

输出:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>12_滴滴1</title>
</head>
<body>

<script type="text/javascript">
  function fun(n, o) {
    console.log(o)
    return {
      fun: function (m) {
        return fun(m, n)
      }
    }
  }

//测试二: undefined ? ? ?
  var b = fun(0).fun(1).fun(2).fun(3)

</script>
</body>
</html>

输出:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>12_滴滴1</title>
</head>
<body>

<script type="text/javascript">
  function fun(n, o) {
    console.log(o)
    return {
      fun: function (m) {
        return fun(m, n)
      }
    }
  }

 // 测试三: undefined ? ? ?
  var c = fun(0).fun(1)
  c.fun(2)
  c.fun(3)

</script>
</body>
</html>

输出:

猜你喜欢

转载自blog.csdn.net/jianghao233/article/details/81814261