1.薯队长写了一篇笔记草稿,请你帮忙输出最后内容。
1.输入字符包括,"(" , “)” 和 "<“和其他字符。
2.其他字符表示笔记内容。
3.()之间表示注释内容,任何字符都无效。 括号保证成对出现。
4.”<“表示退格, 删去前面一个笔记内容字符。括号不受”<"影响
function fun(str) {
var stack = [];
str = str.split("");
var res = '';
for (var i = 0; i < str.length; i++) {
if (str[i] != "(" && str[i] != ")" && stack.length == 0) {
res += str[i]
}
// 括号中间的不添加到res中,直到stack中没有数据
if (str[i] == "(") {
stack.push(i)
}
if (str[i] == ")") {
stack.pop()
}
}
res = res.split("");
for (var i = 0; i < res.length; i++) {
if (res[i] == "<") {
res.splice(i - 1, 2);
i--;
i--;
}
};
return res.toString().replace(/\,/g, "")
}
2.
- for in循环是遍历对象上的每一个可枚举属性,包括原型链上面的可枚举属性,
- obeject.keys()只是遍历自身的可枚举属性,不可以遍历原型链上的可枚举属性,
- object.assign()对象的拷贝,用于将所有可枚举属性的值从一个或多个源对象复制到目标对象,将他返回到目标对象
3.
- Infinity + 1 === Infinity,对Infinity操作得到Infinity
- null === null
4.原型对象继承
class A {};
class B extends A {};
const a = new A();
const b = new B();
console.log(B.__proto__);
console.log(B.prototype);
console.log(B.prototype.__proto__ === A.prototype);
ES6中的class继承中将父类的原型对象作为了子类的原型对象的原型对象,所以B.prototype.proto === A.prototype, b.proto.proto === A.prototype