文章目录


一、选择题

1.下列代码执行的结果是(A)


var name = “小丽” 
function Person(name) {
    var name = '小明';
    this.sayName= function() {
var name = “小刚”
        console.log(name);
 }
}
var a = new Person(“小花”);
a.sayName();

A. 小刚 B. 小明 C. 小丽 D.undefined E.小花

2. 下列关于原型的说法错误的是(D)//实例的对象的__proto__属性指向原型

A. 原型可以节省内存空间

B. 构造函数中的prototype属性,它是一个对象,我们称之为原型

C . 原型有constructor属性,原型的constructor属性指向构造函数

D. 任何一个对象都有__proto__属性,实例的对象的

__proto__属性指向构造函数

3.下列打印的结果是()//对象中的函数this指向当前对象

var name = "懒洋洋";
  var object = {
    name: "喜洋洋",
    getName: function () {
      var name = "沸羊羊";
      var inner = function () {
       	  var name = "美羊羊";
           console.log(this.name);
      }.bind(this);
      inner();
    }
  }
  object.getName();

A. 懒洋洋 B. 喜羊羊 C.美羊羊 D.沸洋洋

4. 下列打印的结果是()//函数调用的结果就是函数的返回值

var x = 1;
function fn(n){
n = n+1
}; 
y = fn(x); y 的值为()

A.2 B.1 C.3 D.Undefined

5.下列代码中输出的结果是

function Person(name) {
    var name = '小明';
    this.sayName= function() {
console.log(this.name)//打印
    }
    this.changeName= function(newName) {
       this.name = newName;
    }}
var a = new Person(“小丽”);
a.changeName('小白');
a.sayName();

A.小明 B.小丽 C.小白 D. undefined

6.以下说法不正确的是//javascript是单线程的

A.JavaScript是多线程的
B.异步指的就是上一个任务没有完成时,不需要等待,先执行下一个任务
C.函数会产生局部作用域,局部作用域内的变量是局部变量 D.call方法实现对象的继承主要是运用了call方法能改变this指向的功能

7.以下说法正确的是//栈里面存的是基本类型的值与引用类型的地址,

堆里面存的是引用类型的值

A.基本数据类型是传址操作,地址存在栈中

B.基本数据类型是传值操作,数值存在堆中

C.引用数据类型是传址操作,数值存在堆中,地址存在栈中

D.引用数据类型是传址操作,数值存在栈中,地址存在堆中

二、问答题

1、面向对象的特征有哪些?(至少写三个)

继承性
封装性
多态性

2、创建对象的四种方式?(写名称即可,不用写代码)

字面量创建
New创建
工厂函数创建
构造函数创建

3、常用的检测是否是object数据类型的两种方式是?

instanceof
constructor

4、原型的作用是什么?(至少写两条)

减少内存的占用
实现数据共享

5、通过构造函数实例化的对象有个__proto__属性,它指向哪里?
原型

6、构造函数的原型对象有一个 constructor 属性,它指向哪里?

构造函数

7、原型链最终指向哪里?

Null

8、js实现继承的三种方式是(写名称即可,不用写代码)?

原型继承
拷贝继承
构造继承

9、下列对象的this指向分别是?(1)、普通函数(2)、构造函数(3)、对象的方法(4)、事件绑定的方法(5)、计时器函数(6)、数组的元素是函数(7)、原型中this

普通函数指向window
构造函数指向实例化对象
对象中的方法指向当前对象
事件函数指向当前事件源
计数器指向window
数组中的函数指向当前数组
原型中的this
实例化对象调运的话就指向实例化对象
原型调用的话就指向当前原型

10、call()方法与apply()方法的作用是什么(两条)?两者有什么区别?

Call():可以调用函数

改变this的指向,为空时指向window,有单个参数就指向当前参数

有多个值就指向括号中的第一个参数,剩下的返回参数列表

Addiy():可以调用函数

改变this的指向,为空时指向window,有单个参数就指向当前参数

有多个值就指向括号中的第一个参数,剩下的返回一个参数数组

11、如果函数B作为函数A返回值,我们想要获取返回值中的内容,我们要函数A的后边加几个小括号?

俩个小括号

12、什么是闭包?

定义在函数中的函数

13、匹配一个八位的全数字的字符串,其正则表达式的写法是?

/^\d{8}$/

14、下列代码打印出的结果分别是?

var arr1 = [1,2,3];

var arr2 = arr1;

console.log(arr2 );//[1,2,3]

arr2.push(4);

console.log(arr2 );//[1,2,3,4]

console.log(arr1); //[1,2,3,4]

引用类型浅拷贝会改变值

15、下列代码打印出的结果分别是?

var arr1 = [1,2,3];
var arr2 = copyArr(arr1);
function copyArr(arr){
    var  res=[];
    for(var i=0,length=arr.length;i<length;i++){
        res.push(arr[i]);
    }
    return res;
}
console.log(arr2 );//[1,2,3]

16、下列代码打印出的结果是?

var name = “小王”;
  function foo() { 
var name = "kebi";
return function() {
 	console.log(name); }; 
} 
var bar = foo(); 
bar(); //kebi

17、下列代码执行的结果分别是

function Person(name) {
    var name = '小明';
    this.sayName= function() {
        alert(name)//小白		下面重新给name赋值了,赋的值是它传过来的值
    }
    this.changeName= function(newName) {
        name = newName
    }}
var a = new Person()
console.log(a.name)// undefined		因为构造函数没有传值且里面没有
a.changeName('小白')
a.sayName()

18、localStorage与sessionStorage的生命周期上的最大区别是?

LocalStorage是不清楚一直在本地上保存
Sessionstorage是浏览器打开是保存,关闭是销毁

19、原型对象的__proto__属性指向哪里?

指向构造函数

20、对象的拷贝继承用的是深拷贝还是浅拷贝?

深拷贝

三、程序书写题(手写代码)

1、求10-20之间的随机数(闭包的方式书写),要求调用三次函数打印结果一样

    var fn =function(max,min){
	var num=Math.floor(Math. random()*(max-min)+min)
	return function(){
		console.log(num)
}
}
var Rnt=fn(10,20)
Rnt()
Rnt()
Rnt()
Rnt()
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐