function Person(name) { this.name = name; this.age = 18; this.sayName = function() { console.log(this.name); } } // 第二步 创建实例 var person = new Person('person')解释以上代码
时间: 2024-04-01 22:34:04 浏览: 157
以上代码是用 JavaScript 语言编写的,它创建了一个名为 Person 的构造函数,该函数接受一个参数 name,用于给实例属性 name 赋值。除此之外,还给实例属性 age 赋了一个默认值 18,并且定义了一个方法 sayName,用于在控制台输出实例的 name 属性。
在第二步中,使用关键字 new 来创建了一个 Person 的实例,传入了参数 'person',这个实例被赋值给了变量 person。这个实例拥有了 name 属性和 age 属性,以及从构造函数原型中继承的 sayName 方法。
相关问题
js this指向练习题
好的,下面是一些关于 JavaScript 中 `this` 指向的练习题:
1. 下面这段代码中,`this` 指向谁?
```javascript
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.getAge = function() {
console.log(this.age);
}
var john = new Person('John', 30);
john.getAge();
```
答案:`this` 指向 `john` 对象。
2. 下面这段代码中,`this` 指向谁?
```javascript
var obj = {
name: 'John',
sayName: function() {
console.log(this.name);
}
};
obj.sayName();
```
答案:`this` 指向 `obj` 对象。
3. 下面这段代码中,`this` 指向谁?
```javascript
function greet() {
console.log('Hello, ' + this.name);
}
var person = {
name: 'John'
};
greet.call(person);
```
答案:`this` 指向 `person` 对象。
4. 下面这段代码中,`this` 指向谁?
```javascript
var name = 'Global';
function greet() {
console.log('Hello, ' + this.name);
}
var person = {
name: 'John',
greet: greet
};
var greet2 = person.greet.bind(person);
greet();
person.greet();
greet2();
```
答案:第一次 `this` 指向全局对象,第二次 `this` 指向 `person` 对象,第三次 `this` 也指向 `person` 对象,因为使用了 `bind` 方法将 `this` 绑定到 `person` 对象上。
请用代码举例说明js中的this指向问题
好的,下面是一些代码示例来说明 `this` 指向问题:
1. 作为函数调用时,`this` 指向全局对象 `window`(浏览器中)或 `global`(Node.js 环境中);
```javascript
function test() {
console.log(this);
}
test(); // 浏览器中输出 window,Node.js 环境中输出 global
```
2. 作为方法调用时,`this` 指向调用该方法的对象;
```javascript
const obj = {
name: 'Tom',
sayName() {
console.log(this.name);
}
}
obj.sayName(); // 输出 Tom
```
3. 使用 `call` 或 `apply` 方法调用函数时,可以显式指定 `this` 的指向;
```javascript
const obj1 = {
name: 'Tom'
}
const obj2 = {
name: 'Jerry'
}
function sayName() {
console.log(this.name);
}
sayName.call(obj1); // 输出 Tom
sayName.call(obj2); // 输出 Jerry
```
4. 作为构造函数调用时,`this` 指向新创建的对象;
```javascript
function Person(name, age) {
this.name = name;
this.age = age;
}
const person = new Person('Tom', 20);
console.log(person.name); // 输出 Tom
console.log(person.age); // 输出 20
```
5. 箭头函数中的 `this` 指向在定义函数时所处的上下文。
```javascript
const obj = {
name: 'Tom',
sayName: () => {
console.log(this.name);
}
}
obj.sayName(); // 输出 undefined
```
需要注意的是,以上示例只是一些简单的例子,实际应用中还有很多复杂的情况需要考虑。
阅读全文