hjr-JavaScript:js面向对象

本文介绍JavaScript中的构造函数、原型模式的应用,以及如何实现继承。探讨了闭包的使用方式,并介绍了反射的概念及其在动态执行方法中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#声明、例化
构造函数模式用于定义实例的属性,而原型模式(原型是一个指针)用于定义方法和共享的属性:

尽量将方法定义为原型方法,原型方法避免了每次调用构造函数时对属性或方法的构造,节省空间,创建对象快.

<script>

    function Person(name) {
	    //使用原型方法扩充的方法可以在类内部使用
	    //使用原型方法扩充的属性可以在类内部使用  
	    //私有属性,只能在对象构造函数内部使用  
        var privateName = "privateName";  
        //公有属性,在对象实例化后调用  
        this.name = name;
        this.lessons = ['Math', 'Physics'];
        //对象方法 
        this.fun = function(){  
		}
       }  
    }  
    //如果原型方法当作静态方法直接调用时,构造函数属性无法被调用
    //原型属性,当作是类内部的属性使用【this.原型属性】,也可以当成公有静态属性使用【对象.prototype.原型属性】  
    Person.prototype = {
        //原型属性1
        constructor: Person,
        //原型方法1
        getName: function () {
            return this.name;
        }
    }
    //原型属性2
    Person.prototype.sex = "男";  
    //原型方法2
    Person.prototype.fun = function(){  
	}
	//公有静态属性(类属性)
	//公有静态属性不能使用 【this.属性】,只能使用 【对象.属性】 调用
	Person.age = 20;
	//公有静态方法(类方法)
	Person.fun = function(){  
    }  
    var person1 = new Person('Jack');
    person1.lessons.push('Biology');
    var person2 = new Person('Lily');
    alert(person1.lessons);//Math,Physics,Biology
    alert(person2.lessons);//Math,Physics
	alert(person1.name === person2.name);//false,//不共享构造函数定义属性
    alert(person1.getName === person2.getName);//true,//共享原型中定义方法
	
</script>

除了对象方法、原型方法必须实例化对象,其余都可以做静态方法(属性)调用,即不需要new,直接用Class.fun()或Class.property调用。
#继承

//先把固定的方法写上
    function extend(Child, Parent) {

    var F = function(){};
    F.prototype = Parent.prototype;
    Child.prototype = new F();
    Child.prototype.constructor = Child;
    Child.uber = Parent.prototype;
  }
//A继承B,A和B是构造函数
   extend(A,B);

#闭包(匿名函数是闭包的一种)
在函数里A的再定义一个函数B并访问A的局部变量,在B里写对局部变量的操作并把B作为返回值,把B取出并执行,相当于访问A的局部变量(或者在A内定义一个不用var修饰的匿名函数C,在C里操作A的局部变量,再在外部调用C)。

把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value)

   function A(){
    var n=999;
    C=function(){n+=1}//匿名函数
    function B(){//操作局部变量并作为返回值
      alert(n);
    }
    return B;
  }
  var result=A();//获取返回值
  result(); // 999//通过内部函数返回值实现闭包,相当于在函数A外操作A的局部变量n
  C();//通过匿名函数实现闭包,相当于在函数A外操作A的局部变量n,
  result(); // 1000 //证明n值一直在内存中没被销毁(普通局部变量在函数调用结束后会被销毁),B依赖于A,B被赋给全局变量,A和B也存在与内存中。

#反射(避免switch,动态执行方法或new对象)

  1. eval反射
    eval("this."+方法名字符串+"()");//括号里可以写参数
//括号里可以写参数
var funcName = 'funStr';
var obj = new window[funcName]();
//或
var funcName = 'funStr';
window[funcName]();//相当于 funStr();
关于HJR-3FF系列功率继电器的数据手册、规格参数以及应用场景的信息如下: ### 规格参数 对于型号为HJR-3FF的功率继电器,这类元件通常属于工业级应用的产品。具体到HJR-3FF-S-Z这一款,其线圈工作电压有多种选择,比如常见的24VDC版本。此类型的继电器一般拥有较高的切换能力,在额定负载下能够可靠地接通和断开电路。 - **触点形式**:单刀双掷(SPDT)、多刀多掷等形式不等。 - **最大开关容量**:依据不同子型号而变化,但普遍能支持较高电流等级,如15安培甚至更高。 - **线圈电压**:涵盖直流与交流范围内的多个标准值,像12VDC, 24VDC等都是较为普及的选择。 - **绝缘耐压**:确保了在高电压环境下的安全性,典型数值可能达到数千伏特以上。 - **机械寿命/电气寿命**:表示继电器可以承受的操作次数限制,这取决于制造商的设计标准。 请注意实际产品的详细技术指标应以厂商提供的最新数据手册为准,因为随着时间推移和技术进步,某些性能可能会有所调整或优化。 ### 应用场景 HJR-3FF系列功率继电器适用于需要频繁操作大电流回路的应用场合,例如但不限于: - 工业自动化控制系统中的电机启动停止控制; - 家电产品内部用于管理加热元件或其他耗电量较大的组件; - 新能源领域里光伏逆变器、风力发电机组件间的电力传输路径转换; - 汽车行业中涉及引擎管理系统或是辅助驾驶系统的电源分配单元; 为了获取最准确的技术文档和支持材料,建议直接联系供应商或者访问官方网站查询对应型号的具体资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

架构师小侯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值