首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

嵌入式新开发模式(JavaScript)--C端与JS端方法调用

概述上一篇我们描述了为什么我们要使用胶水语言(JavaScript,PikaScript)来改变我们的嵌入式开发模式。...并描述了如何在嵌入式设备拉起JavaScript应用及JavaScript应用在嵌入式设备的存在形式(字符串,文件)。...本篇文章作者来介绍JS在嵌入式设备上的如何使用,我们通过一下几点说明:C端如何导出方法提供给到JS端;C端如何导出参数提供给JS端;通过C端导出方法,JS端控制LED灯;在使用JerryScript引擎实现...,在JS端实际编写程序是非常方便的,调用方式跟C语言编程一样。...当C端的基础能力编写完毕之后,JS应用程序实际跟C语言是基本一致的,而且JavaScript提供了很多方法,对于我们编写业务逻辑更加友好。

1.4K40

【JavaScript】数据类型转换 ① ( 隐式转换 和 显式转换 | 常用的 数据类型转换 | 转为 字符串类型 方法 )

一、 JavaScript 数据类型转换 1、数据类型转换 在 网页端 使用 HTML 表单 和 浏览器输入框 prompt 函数 , 接收的数据 是 字符串类型 变量 , 该 字符串类型 变量 无法...直接进行使用 , 如 : 与 number 数字类型 变量 相加 , 与 boolean 布尔类型 进行 逻辑运算 ; 将 字符串类型 变量 先转为 其它数据类型 , 然后再与对应 数据类型 进行计算 ; 2、隐式转换...和 显式转换 在 JavaScript 中 , 变量 的 数据类型 可以 互相进行转换 , 数据类型 转换 有 两种方式 : 隐式转换 : 在 指定的 使用场景 进行 自动 转换 ; 显式转换 : 主动进行...转为 字符串类型 方法 : -加号拼接字符串 ( 隐式转换 ) : 在 使用 加号 + 运算符 进行 字符串拼接时 , 会自动将 被拼接的 数据值 转为 字符串类型 , 在下面的代码中 , 自动将...) : 调用 要转换的 值 的 toString 函数 , 可以将 该值转为 字符串 类型 , 下面的代码中调用了 number 类型的变量 num 的 toString 函数 , 将 数字类型 转为

46010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    全面理解面向对象的 JavaScript

    要掌握好 JavaScript,首先一点是必须摒弃一些其他高级语言如 Java、C# 等类式面向对象思维的干扰,全面地从函数式语言的角度理解 JavaScript 原型式面向对象的特点。...谁调用我,我属于谁:str 在接受了面向对象存在一种叫做基于原型实现的方式的事实之后,下面我们就可以来深入探讨 ECMAScript 是如何依据这一方式构造自己的语言的。...彻底理解原型链 (prototype chain) 在 ECMAScript 中,每个由构造器创建的对象拥有一个指向构造器 prototype 属性值的 隐式引用(implicit reference)...JavaScript 类式继承的实现方法 从 代码清单 5 可以看出,基于原型的继承方式,虽然实现了代码复用,但其行文松散且不够流畅,可阅读性差,不利于实现扩展和对源代码进行有效地组织管理。...不得不承认,类 式继承方式在语言实现上更具健壮性,且在构建可复用代码和组织架构程序方面具有明显的优势。这使得程序员们希望寻找到一种能够在 JavaScript 中以类式继承风格进行编码的方法途径。

    1.1K100

    Javascript Prototypes之旅(A Plain English Guide to JavaScript Prototypes译文)

    该方法在ES5中可用,但老的浏览器和JS引擎要通过es5-hhim来使用了。 ?...8.Constructor Functions(构造函数)   构造函是javascript中用于构造原型链的最常用的方法。因为它是构造类型的唯一的原始方式。...'this' is assigned implicitly(隐式分配的this)   当我们使用关键字new创建函数实例时,Javascript会隐式地创建一个this对象,并在函数的最后返回该this...注意:这个隐式创建的this对象,当且仅当使用关键字new创建函数实例时出现,若不使用关键字new就会就会出现不可预知的问题,一般情况下为以首字母大写的方式来命名构造函数,以提示需使用关键字new来调用该函数...__proto__和prototype属性的关系其实很简单,prototype属性所指向的原型会在使用关键字new调用构造函数时被复制到隐式创建的this对象的__proto__中。

    69190

    一篇文章让你搞懂原型和原型链

    原型和原型链作为深入学习JavaScript最重要的概念之一,如果掌握它了后,弄清楚例如:JavaScript的继承,new关键字的原来、封装及优化等概念将变得不在话下,那么下面我们开始关于原型和原型链的介绍...当调用某种方法或查找某种属性时,首先会在自身调用和查找,如果自身并没有该属性或方法,则会去它的__proto__属性中调用查找,也就是它构造函数的prototype中调用查找。 什么是原型链?...这就说明,我们可以通过原型链的方式,实现 Person 继承 Animal 的所有属性和方法。...结语 看到这,相信大家对原型和原型链的概念应该已经有了一定了解了,如果仍然不太理解,也不用气馁,因为闭包及原型链是JavaScript最难理解的几部分。...相信之后在不断的开发实践中会使你理解的更为透彻,多学习多思考才能更快掌握。如果大家有任何反馈和问题,也欢迎通过评论区告诉我,谢谢。

    1.2K10

    JavaScript原型链

    原型链由对象的隐式原型([[Prototype]])组成,它允许对象在找不到属性或方法时向上查找并在原型链中的上级对象中查找。...原型链的概念在JavaScript中,每个对象都有一个隐式原型([[Prototype]])属性,它指向对象的原型。原型本身也是一个对象,拥有自己的属性和方法,同时也有自己的原型。...如果没有,它会继续在对象的隐式原型中查找,然后继续在隐式原型的原型中查找,直到找到属性或方法,或者到达原型链的末尾(即原型的原型为null)。...Object.prototype"是"Object"对象的原型,它包含一些JavaScript内置的属性和方法。在原型链的最末端,原型的原型为null,表示原型链的终点。...如果对象本身没有该属性或方法,JavaScript会继续在对象的隐式原型中查找。如果隐式原型中有该属性或方法,则返回它。否则,JavaScript会继续在隐式原型的原型中查找,形成一个层级关系。

    18430

    面向 JavaScript 开发人员的 ECMAScript 6 指南(3):JavaScript 中的类

    当克隆一个对象时,会保持对其原型对象的隐式引用。 在基于对象的环境中工作有其优势,但在没有基于类的概念(比如属性和继承)的情况下能执行的操作上也存在局限。...您可以利用它类似 JavaScript 的灵活参数,以及隐式的 arguments 参数,就象这样: 清单 3....: 46 } getOlder 方法是在 Person 对象上定义的,所以在调用 ted.getOlder() 时,解释器会沿原型链从 ted 查找到 Person。...此外,从清单 11 中的 Author 构造函数可以看到,关键字 super 显然会在原型链中向上调用给定方法的原型版本。在本例中,调用了构造函数,让 Person 构造函数有机会执行发挥自己的作用。...如果没有,它会将 population 设置为 0,隐式地创建该字段。如果有一个 population 字段,那么它会递增该值。

    67240

    【面试利器】原生JavaScript灵魂拷问,你能答上多少(一)

    隐式转换时会自动调用 toString 和 valueOf 方法,两者优先级如下: 强制转化为字符串类型时,优先调用 toString 方法 强制转换为数值类型时,优先调用 valueOf 方法...转换为boolean 显式:Boolean 方法可以显式将值转换为布尔类型 隐式:通常在逻辑判断或者有逻辑运算符时触发(|| && !)...除值 0,-0,null,NaN,undefined,或空字符串("") 为 false 外,其余全为 true 转化为string 显式:String 方法可以显式将值转换为字符串 隐式:+ 运算符有一侧操作数为...,为string转换 一元 +- 操作 第十一问:== 的隐式转换规则 ==: 只需要值相等,无需类型相等;null, undefined 在 == 下互相等且自身等 == 的转换规则: 被比较数B...{} 在 JavaScript 中,不止可以作为对象定义,也可以作为代码块的定义。

    91220

    【每日小知识】 final 关键字的一些总结

    final关键字主要用在三个地方:变量、方法、类。...对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。...当用final修饰一个类时,表明这个类不能被继承。final类中的所有成员方法都会被隐式地指定为final方法。 使用final方法的原因有两个。...第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。...但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升(现在的Java版本已经不需要使用final方法进行这些优化了)。类中所有的private方法都隐式地指定为final。

    43230

    JS入门难点解析7-this

    在 JavaScript 内部,作用域确实和对象类似,可见的标识符都是它的属性。但是作用域“对象”无法通过 JavaScript 代码访问,它存在于 JavaScript 引擎内部。...隐式绑定和方法调用(方法调用模式) 当一个函数被保存为对象的一个属性时,我们称它为一个方法。当一个方法被直接对象所调用时,this会被隐式绑定到该对象。...如果调用表达式包含一个提取属性的动作,那么它就是被当做一个方法来调用。要记住,对象属性引用链中只有最顶层或者说最后一层会影响调用位置。...(obj.foo)(); // 2 总结:其实,隐式绑定只有在直接进行对象方法调用时才会出现,就是读取到属性方法以后直接在后面加括号调用,如下: obj.foo(); 如果在调用前经过了任何运算,比如...(间接调用模式) 在分析隐式绑定时,我们必须在一个对象内部包含一个指向函数的属性,并通过这个属性间接引用函数,从而把 this 间接(隐式)绑定到这个对象上。

    74810

    《你不知道的js(上卷)》笔记2(this和对象原型)

    如果调用位置是有上下文对象,或者被某个对象拥有或者包含,那么就可能隐式绑定。...对象属性引用链中只有最顶层或者说最后一层会影响调用位置。 隐式绑定的函数可能会丢失绑定对象,而应用默认绑定,把this绑定到全局对象或者undefined上,取决于是否是严格模式。...参数传递其实就是一种隐式赋值,因此我们传入函数时也会被隐式赋值,所以结果一样。 显式绑定 可以使用函数的call(..)和apply(..)方法实现显式绑定。...函数本身并不是构造函数,然而,当你在普通的函数调用前面加上new关键字之后,就会把这个函数调用变成一个“构造函数 调用”。实际上,new会劫持所有普通函数并用构造对象的形式来调用它。...在JavaScript中对于“构造函数”最准确的解释是,所有带new的函数调用。

    70310

    原型链分析

    : 隐式原型:所有引用类型(函数、数组、对象)都有__proto__属性,例如arr....__proto__ 显式原型:所有函数拥有prototype属性,例如:func.prototype 原型对象:拥有prototype属性的对象,在定义函数时被创建 基于这三个关键词我们再展开之后的原型链之间的递归关系可以如下图所示...[原型链关系.png] 在JavaScript中只要创建了一个函数,就会为该函数生成一个prototype属性(指向函数的原型对象)。...[实例搜索.png] 查找机制 当一个变量在调用某方法或属性时,如果当前变量并没有该方法或属性,就会在该变量所在的原型链中依次向上查找是否存在该方法或属性,如果有则调用,否则返回undefined 什么时候会用到...例如声明了一个arr数组类型的变量,arr变量却可以调用如下图中并未定义的方法和属性。 [应用.png] 通过变量的隐式原型可以查看到,数组类型变量的原型中已经定义了这些方法。

    25000

    《你不知道的JavaScript》-- 原型(笔记)

    显示混入模式的一种变体被称为“寄生继承”,它既是显式的又是隐式的,工作原理如下: function Vehicle(){ this.engines = 1; } Vehicle.prototype.ignition...this.count + 1 : 1; } } var Another = { cool: function(){ Something.cool.call(this);//隐式把...有些情况下会隐式产生屏蔽: var anotherObject = { a: 2 } var myObject = Object.create(anotherObject); console.log...委托这个术语可以更加准确地描述JavaScript中对象的关联机制。 在JavaScript中对于“构造函数”最准确的解释是,所有带new的函数调用。...在ES5中,直接获取一个对象[[Prototype]]链的方法是: Object.getPrototypeOf(a); 绝大多数浏览器也支持一种非标准的方法来访问内部[[Prototype]]属性: a

    31410

    Classes (类)

    ; } } # 多态 Car 重写了继承自父类的 drive() 方法,但是之后 Car 调用了 inherited:drive() 方法,这表明 Car 可以引用继承来的原始 drive()...多态的另一个方面是,在继承链的不同层次中一个方法名可以被多次定义,当调用方法时会自动选择合适的定义。...JavaScript(在 ES6 之前)并没有相对多态的机制。所以,由于 Car 和 Vehicle 中都有 drive() 函数,为了指明调用对象,必须使用绝对(而不是相对)引用。...# 混合复制 JavaScript 中的函数无法(用标准、可靠的方法)真正地复制,所以只能复制 对共享函数对象的引用 (函数就是对象=)。...实际上,如果必须使用一个复杂的库或者函数来实现这些细节,那就标志着你的方法是有问题的或者是不必要的。 # 寄生继承 显式混入模式的一种变体被称为“寄生继承”,它既是显式的又是隐式的。

    25520

    Java核心技术 卷I 基础知识 学习笔记(4)

    在运行时能够自动地选择调用哪个方法的现象被称为动态绑定。 由一个公共超类派生出来的所有类集合被称为继承层次。在继承层次中,通过某个特定类到其祖先的路径被称为该类的继承链。...假设要调用x.f(args),隐式参数x声明为类C的一个对象。下面是调用过程的详细描述: (1)编译器查看对象的声明类型和方法名。假设调用x.f(param),且隐式参数x声明为C类的对象。...(3)如果是private、static、final方法或者构造器,那么编译器可以准确地知道应该调用哪个方法,将这种调用方式称为静态绑定。...与此对应的是,调用的方法依赖于隐式参数的实际类型,并且在运行时实现动态绑定。 (4)当程序运行,并且采用动态绑定调用方法时,虚拟机已定调用与x所引用对象的实际类型最合适的那个类的方法。...这种编译器可以准确地知道类之间的继承关系,并能够检测出类中是否真正地存在覆盖给定的方法。如果方法很简短、被频繁调用且没有真正地被覆盖,那么即时编译器就会将这个方法进行内联处理。

    51840

    JavaScript 实践+理论(总结篇):作用域、闭包、this、对象原型

    引擎执行 LHS 时若找不到该标识符,会隐式地在全局作用域中创建一个该名称的变量,并将其返回给引擎。 1....在 use strict 模式下禁止自动或隐式地创建全局变量,所以在引擎执行 LHS 时,不会再隐式地创建一个全局变量,而是直接抛出一个 ReferenceError。 2....如果都不是,则是默认绑定,在严格模式下,this 指向 undefined。非严格模式下, this 指向全局对象。 1. 是否在某个对象中调用(隐式绑定), this 指向绑定对象的上下文 1....关联两个对象最常用的方法就是用 new 关键字调用,因为在调用的第四个步骤中会关联到所创建的新对象。 3. 使用 for...in 遍历对象和 in 操作符时都会查找对象的整条原型链。...在 JavaScript 中对于构造函数最准确的解释是,所有带 new 的函数调用。 6. 何为原型链?

    10010

    13. 精读《This 带来的困惑》

    js 有许多种 this 丢失情况,比如 隐式绑定 别名丢失隐式绑定 回调丢失隐式绑定 显式绑定new绑定 箭头函数改变this作用范围 等等。...由于在 prototype 中的对象依赖 this,如果 this 丢了,就访问不到原型链,不但会引发报错,在写代码时还需要注意 this 的作用范围是很头疼的事。...,但 this 还能正确访问的原因在于,没有将 setName 的方法放在原型链上,而是放在了每个实例中,因此无论怎么丢失 this,也仅仅丢失了原型链上的方法,但 this 无论如何会首先查找其所在对象的方法...,只要方法不放在原型链上,就不用担心丢失的问题。...调用函数引用时,this 会根据调用者环境而定。

    31920

    你不知道的this(2)

    我们可以把调用栈想象成一个函数调用链,就像我们在前面代码段的注释所写的医用。但是这种方法实际开发中太麻烦,我们更推荐的另一种查看调用栈的方法是使用浏览器的调试工具。 ?...因为对象属性引用链只有最后一层才会影响调用位置! 隐式丢失 1、隐式绑定经常会出现丢失绑定对象,见下例。...显示绑定 就像我们刚才看到的那样,在分析隐式绑定时,我们必须在一个对象内部包含一个指向函数的属性,并通过这个属性间接引用函数,从而把this间接(隐式)绑定到这个对象上。...隐式绑定和显式绑定哪个优先级更高?...问题在于,硬绑定会大大降低函数的灵活性,使用硬绑定之后就无法使用隐式绑定或者显式绑定来修改this。

    51610

    【javascript】函数中的this的四种绑定形式 — 大家准备好瓜子,我要讲故事啦~~

    javascript中的this和函数息息相关,所以今天,我就给大家详细地讲述一番:javascript函数中的this 一谈到this,很多让人晕晕乎乎的抽象概念就跑出来了,这里我就只说最核心的一点...【总结】 凡事函数作为独立函数调用,无论它的位置在哪里,它的行为表现,都和直接在全局环境中调用无异 this的隐式绑定 【故事——线路2】 迪斯(this)穿越来异世界“伽瓦斯克利”(javascript...,行为表现(输出)完全看不出来它就是在obj内部定义的,其原因在于:我们隐式绑定的this丢失了!!...this绑定的是最内层的对象 在隐式绑定中,如果函数调用位置是在一串对象属性链中,this绑定的是最内层的对象。...因为this的缘故 在隐式绑定下:函数和只是暂时住在“包含对象“的旅馆里面,可能过几天就又到另一家旅馆住了 在显式绑定下:函数将取得在“包含对象“里的永久居住权,一直都会”住在这里“ new绑定 【故事

    72770

    【前端进阶】深入浅出 JavaScript 中的 this

    这个记录会包 含函数在哪里被调用(调用栈)、函数的调用方法、传入的参数等信息。...当函数引用有上下文对象时,隐式绑定规则会把函数调用中的 this 绑定到这个上下文对象。...根据我们之前说过的,这里会应用默认绑定 显示绑定 在分析隐式绑定时,我们必须在一个对象内部包含一个指向函数的属性,并通过这个属性间接引用函数,从而把 this 间接(隐式)绑定到这个对象上。...那么如果我们不想在对象内部包含函数引用,而想在某个对象上强制调用函数,该怎么 做呢Javascript 中提供了 apply 、call 和 bind 方法可以让我们实现 不同之处在于,call() 和...找到之后就可以顺序应用下面这四条规则来判断 this 的绑定对象 由 new 调用?绑定到新创建的对象 由 call 或者 apply(或者 bind)调用?绑定到指定的对象 由上下文对象调用?

    39720
    领券