js如何使用作用域安全的构造函数
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章给大家分享的是有关js如何使用作用域安全的构造函数的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。作用域安全的构造函数构造函数其实就是一个使用new操作符调用的函数f
千家信息网最后更新 2025年01月18日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安全错误
数据库的锁怎样保障安全
数据库管理师证书
传感网络技术教学视频
苹果电脑做软件开发
大连托天软件开发有限公司
w3af网络安全吗
车机中控软件开发
宠物管理系统数据库
天文历法数据库
高科技互联网英语
c 打包sql数据库
扫黄打非网络安全书法
数据库的安全性三个方面
游戏服务器会遭受攻击吗
网络技术工程师年度工作自评
德惠品质网络技术服务至上
服务器里面怎么更改主机名称
网络安全交易法规
埃安车联服务器维护中
商丘网络安全工程师信息
做软件开发能养活公司吗
贵州网络安全 应急预案
专业网络技术论坛
围绕网络安全宣传办手抄报
网络安全绘画作品电脑
我想看网络安全手抄报最简单的
打开英雄联盟出现服务器乱码
学软件开发电脑需要独显吗
黄浦区项目数据库成本
配置maven服务器
联想服务器远程控制