javascript - 关于ES6中class类的一些疑问
本文介绍了javascript - 关于ES6中class类的一些疑问的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
关于ES6中class类的一些疑问
RT
之前直接用构造函数模拟类是这样的:
//ES5.js
function Person(name,age){
this.name=name;
this.age=age;
}
1、这个Person构造函数本身用于模拟类。
可以添加类方法:
Person.classMethod=function(){cosole.log('我是一个类方法');}
2、定义Person产生了一个原型对象Person.prototype,原型对象的constructor指向Person自己。
现在使用ES6的class
//ES6.js
class Person{
constructor(name,age){
this.name=name;
this.age=age;
}
fn1(){
return `我是${this.name},今年${this.age}岁.`;
}
}
疑问:
1、class Person里面的construccor跟ES5.js中的构造函数function Person(){...}是一回事么?这个外面套一层class Person有什么意义?
2、class Person里的fn1是原型上的方法Person.prototype.fn1?还是等同于Person.classMethod类方法?
解决方案
好吧。。自己解决了。。
//modulePerson.js
//ES6中class类
class Person {
constructor(name, age) {
//constructor等同于function Person(name,age){}构造函数
this.name = name;
this.age = age;
this.init();
//构造函数中调用init,省去【实例】调用
}
init() {
this.say();
//调用另一个原型方法say;
}
say() {
//此处say方法等同于Person.prototype.say=function(){}原型方法,
console.log(`我是${this.name},我今年${this.age}岁了。`);
}
}
export { Person };
//entry.js
import { Person } from './Person.js';
new Person('小明', 20); //实例化并传参数
不过有个新的问题。。
写插件的时候不想用jQuery的$.extend合并,用了ES6的 Object.assign();
this.config = Object.assign({}, defaults, settings)
ES6转ES6编译出来的这个:
if (!Object.assign) {
Object.defineProperty(Object, "assign", {
enumerable: false,
configurable: true,
writable: true,
value: function(target, firstSource) {
"use strict";
if (target === undefined || target === null)
throw new TypeError("Cannot convert first argument to object");
var to = Object(target);
for (var i = 1; i < arguments.length; i++) {
var nextSource = arguments[i];
if (nextSource === undefined || nextSource === null) continue;
var keysArray = Object.keys(Object(nextSource));
for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {
var nextKey = keysArray[nextIndex];
var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
if (desc !== undefined && desc.enumerable) to[nextKey] = nextSource[nextKey];
}
}
return to;
}
});
};
在IE8上报错。说不支持语法。。。哪位知道是怎么回事?拜谢解答、、
这篇关于javascript - 关于ES6中class类的一些疑问的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文