javascript高级试题(附答案)
定义在函数中的函数。
文章目录
- 一、选择题
- 二、问答题
-
- 1、面向对象的特征有哪些?(至少写三个)
- 2、创建对象的四种方式?(写名称即可,不用写代码)
- 3、常用的检测是否是object数据类型的两种方式是?
- 4、原型的作用是什么?(至少写两条)
- 6、构造函数的原型对象有一个 constructor 属性,它指向哪里?
- 7、原型链最终指向哪里?
- 8、js实现继承的三种方式是(写名称即可,不用写代码)?
- 9、下列对象的this指向分别是?(1)、普通函数(2)、构造函数(3)、对象的方法(4)、事件绑定的方法(5)、计时器函数(6)、数组的元素是函数(7)、原型中this
- 10、call()方法与apply()方法的作用是什么(两条)?两者有什么区别?
- 11、如果函数B作为函数A返回值,我们想要获取返回值中的内容,我们要函数A的后边加几个小括号?
- 12、什么是闭包?
- 13、匹配一个八位的全数字的字符串,其正则表达式的写法是?
- 14、下列代码打印出的结果分别是?
- 15、下列代码打印出的结果分别是?
- 16、下列代码打印出的结果是?
- 17、下列代码执行的结果分别是
- 18、localStorage与sessionStorage的生命周期上的最大区别是?
- 19、原型对象的__proto__属性指向哪里?
- 20、对象的拷贝继承用的是深拷贝还是浅拷贝?
- 三、程序书写题(手写代码)
一、选择题
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()
更多推荐
所有评论(0)