constructor

Posted sske531549304

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了constructor相关的知识,希望对你有一定的参考价值。

防篡改: 禁止修改对象的属性结构
 防扩展: 禁止向对象中添加新属性
Object.preventExtensions(obj)
 密封: 即防扩展,又禁止删除旧属性
Object.seal(obj)
其实是将所有属性的configurable设置为false

 

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
"use strict";

function Emp(id,name,salary,age) {
//this->新对象
//id只读,禁止删除
//name禁止删除
//salary禁止删除,禁止遍历
//age:18-65之间
this.id=id;
this.name=name;
this.salary=salary;

var _age;
Object.defineProperties(this,{
id:{writable:false},
salary:{enumerable:false},
age:{
get(){return _age;},
set(val) {
if (val>=18&&val<=65)
_age=val;
else
throw new RangeError("年龄必须介于18-65之间");
},
enumerable:true
}
});
this.age=age;

//防扩展
//设置当前新对象禁止扩展新属性
// Object.preventExtensions(this);
//密封
Object.seal(this);
}
var eric=new Emp(1001,"Eric",10000,25);
// eric.is++;
// delete eric.id;
// eric.age=-2;
console.dir(eric);
</script>
</body>
</html>























































以上是关于constructor的主要内容,如果未能解决你的问题,请参考以下文章

从prop更新更新状态将导致循环错误

React教程:父子组件传值(组件通信)

代码中 方法 处提示:This method has a constructor name

在 Internet Explorer 中未定义 constructor.name

js之constructor 和 super

c++类继承,未定义引用'Class::Constructor()'