JavaScript面试题

JavaScript

(1)JS中的对象是什么?

JavaScript 中的所有事物都是对象:字符串、数字、数组、日期等等。

(2)JS的对象和Java,C#中的对象有什么区别?

java是面向对象的,也就是有继承,封装,多态。
js是基于对象的,就是没有上述三点。js的继承等是通过原型链或其他方法进行实现的,ECMAscript6的class(类)本质上还是对象,与java的class(类)是不同的。java的类是不可以直接运行的。js的对象是可以直接调用运行的。

(3)JS如何创建对象?(你有哪些方法)

1、构造函数创建

var Person = new Object();
Person.name = '张三';
Person.age = 20;
Person.sex = '男';
//查看
console.log(Person);
console.log(Person.age);

2、字面量表示法

var Person = {};  //相当于var Person = new Object();
var Person = {
 name:'张三',
 age:20, 
 sex:'男',
}
//查看
console.log(Person);
console.log(Person.age);

3、工厂模式创建对象

  function Person(name, age, sex) {
        var information = new Object();
        information.name = name;
        information.age = age;
        information.sex = sex;
        information.sayName = function() {
            console.log(this.name);
        };
        return information;
    }
    var person1 = Person('张三', 20, '男');
    var person2 = Person('李云', 20, '女');
    console.log(person1);
    console.log(person2);

4、构造函数创建对象

function Person(name, age, sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.sayName = function() {
            console.log(this.name);
        };
    }
    var person1 = new Person('张三', 20, '男');
    var person2 = new Person('李云', 20, '女');
    console.log(person1);
    console.log(person2);

5、原型创建对象模式

    function Person() {}
    Person.prototype.name = '李云';
    Person.prototype.age = 20;
    Person.prototype.sex = '女';
    Person.prototype.sayName = function() {
        console.log(this.name);
    };
    var person1 = new Person();
    console.log(person1.name);

6、组合使用构造函数模式和原型模式

(4)JS的构造函数是什么?有什么作用?
定义:在js中,用 new 关键字来调用的函数,称为构造函数。构造函数首字母一般大写
作用:为了让代码重复使用。
构造函数的缺点:就是每个方法都要在每个实例上重新创建一遍,方法指的就是我们在对象里面定义的函数。如果方法的数量很多,就会占用很多不必要的内存。
(5)new关键字是什么?有什么作用?

new关键字与构造函数一起使用以创建对象。

new关键字做了4件事:

  • 创建空对象 {}
  • 将空对象分配给 this 值
  • 将空对象的proto指向构造函数的prototype
  • 如果没有使用显式return语句,则返回this

(6)构造函数中的this是什么?指向又是什么?

this是指包含它的函数作为方法被调用时所属的对象。
this的四种情况:

  1. 创建一个新的对象;
  2. 将构造函数的作用域赋值给新对象(在这里this就指向了这个新对象);
  3. 执行构造函数中的代码;
  4. 返回新对象;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值