js如何使用作用域安全的构造函数
发表于:2025-02-22 作者:千家信息网编辑
千家信息网最后更新 2025年02月22日,这篇文章给大家分享的是有关js如何使用作用域安全的构造函数的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。作用域安全的构造函数构造函数其实就是一个使用new操作符调用的函数f
千家信息网最后更新 2025年02月22日js如何使用作用域安全的构造函数
这篇文章给大家分享的是有关js如何使用作用域安全的构造函数的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
作用域安全的构造函数
构造函数其实就是一个使用new操作符调用的函数
function Person(name,age,job){ this.name=name; this.age=age; this.job=job;}var person=new Person('match',28,'Software Engineer');console.log(person.name);//match
如果没有使用new操作符,原本针对Person对象的三个属性被添加到window对象
function Person(name, age, job) { this.name = name; this.age = age; this.job = job;}var person = Person('match', 28, 'Software Engineer');console.log(person); //undefinedconsole.log(window.name);//match
window的name属性是用来标识链接目标和框架的,这里对该属性的偶然覆盖可能会导致页面上的其它错误,这个问题的解决方法就是创建一个作用域安全的构造函数。
function Person(name, age, job) { if (this instanceof Person) { this.name = name; this.age = age; this.job = job; } else { return new Person(name, age, job); }}var person = Person('match', 28, 'Software Engineer');console.log(window.name); // ""console.log(person.name); //'match'var person= new Person('match',28,'Software Engineer');console.log(window.name); // ""console.log(person.name); //'match'
但是,对构造函数窃取模式的继承,会带来副作用。这是因为,下列代码中,this对象并非Polygon对象实例,所以构造函数Polygon()会创建并返回一个新的实例。
function Polygon(sides) { if (this instanceof Polygon) { this.sides = sides; this.getArea = function() { return 0; } } else { return new Polygon(sides); }}function Rectangle(wifth, height) { Polygon.call(this, 2); this.width = this.width; this.height = height; this.getArea = function() { return this.width * this.height; };}var rect = new Rectangle(5, 10);console.log(rect.sides); //undefined
如果要使用作用域安全的构造函数窃取模式的话,需要结合原型链继承,重写Rectangle的prototype属性,使它的实例也变成Polygon的实例。
function Polygon(sides) { if (this instanceof Polygon) { this.sides = sides; this.getArea = function() { return 0; } } else { return new Polygon(sides); }}function Rectangle(wifth, height) { Polygon.call(this, 2); this.width = this.width; this.height = height; this.getArea = function() { return this.width * this.height; };}Rectangle.prototype = new Polygo
感谢各位的阅读!关于"js如何使用作用域安全的构造函数"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
函数
安全
作用
实例
对象
属性
内容
就是
操作符
更多
模式
篇文章
不错
实用
三个
代码
会创
副作用
原型
原本
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库合作
数据库水印课程设计
网络安全专业要学哪些课程知乎
正数网络技术有限公司程序员
网络安全个人隐私防泄漏
街道网络安全宣传倡议书
无量网络技术有限公司
游戏软件开发wbs工作包
山东欣欣网络技术有限公司
数据库加快查询
如何连接服务器管理口
库房数据库管理系统前景
莆田学院网络技术协会
固原网络安全工程师证
怎样控制软件开发人员
文件服务器不加域怎么共享
数据库云服务器
数据库的核心软件是
网络技术大牛百家号
软件开发行业费用有哪些
北京java软件开发国企
抚州高性价比服务器
云闪付抢券服务器崩溃
扬州java软件开发服务
软件开发说服领导招人
如何在启动数据库时直接弹出窗体
全球海底光缆服务器
软件开发行业项目助理
网络安全空间测绘方向
数据库系统第六章答案