
js中严格模式下创建对象构造函数
在严格模式下,创建对象的构造函数//constru.js'usestrict'functionConstru(){this.a=37;}module.exports=Co...
在严格模式下,创建对象的构造函数
// constru.js
'use strict'
function Constru() {
this.a = 37;
}
module.exports = Constru;
//test.js
const Constru = require('constru.js')
const constru = new Constru();
console.log(constru.a)
结果正常
我把这个对象放在egg框架里面,使用npm run dev运行整个系统报错
TypeError: Cannot set property 'a' of undefined
很费解
在线等!!!! 展开
// constru.js
'use strict'
function Constru() {
this.a = 37;
}
module.exports = Constru;
//test.js
const Constru = require('constru.js')
const constru = new Constru();
console.log(constru.a)
结果正常
我把这个对象放在egg框架里面,使用npm run dev运行整个系统报错
TypeError: Cannot set property 'a' of undefined
很费解
在线等!!!! 展开
1个回答
2017-12-04 · 百度知道合伙人官方认证企业
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注

展开全部
var person1=createPerson("Nicholas",29,"software Engineer");
var person1=new Person("Nicholas",29,"software Engineer");
区别在这两句话中,你可以看到第一个语句里面没有new关键字,直接执行一个函数;而第二个表达式中有new,也就是说是新实例化了一个对象。
JS中关于this的定义是:函数直接在全局中执行,那么this指向的是全局对象window。也就是说你在createPerson中new了一个o,但是你再执行this.name=name那么就等于是执行了window.name=name,o对象本身不会有任何印象,最后你return了o也只是得到了一个空对象。
而JS中执行了new之后,等于通过构造函数创建了一个新对象,那么这个构造函数中的this也就指向了这个新实例化的对象,此时this.name=name修改了新对象person1中的name值。
关于对象实例化的知识和this指向的问题题主还多翻一翻博客园的文章,讲的很详细,从长久发展来看先打好基础对你以后的道路更有好处。
var person1=new Person("Nicholas",29,"software Engineer");
区别在这两句话中,你可以看到第一个语句里面没有new关键字,直接执行一个函数;而第二个表达式中有new,也就是说是新实例化了一个对象。
JS中关于this的定义是:函数直接在全局中执行,那么this指向的是全局对象window。也就是说你在createPerson中new了一个o,但是你再执行this.name=name那么就等于是执行了window.name=name,o对象本身不会有任何印象,最后你return了o也只是得到了一个空对象。
而JS中执行了new之后,等于通过构造函数创建了一个新对象,那么这个构造函数中的this也就指向了这个新实例化的对象,此时this.name=name修改了新对象person1中的name值。
关于对象实例化的知识和this指向的问题题主还多翻一翻博客园的文章,讲的很详细,从长久发展来看先打好基础对你以后的道路更有好处。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询