首页 > 其他分享 >JS测试文章

JS测试文章

时间:2024-05-19 09:40:42浏览次数:27  
标签:function 函数 对象 lastName JS JSON 测试 文章 var

目录

1. HOOK


原理: JS是一种弱类型语言,同一个变量可以多次定义。

  • 不同JS文件,中类,中的函数hook

1.1. 直接替换函数


简单、粗暴易被检测

// 替换原有函数
var originalFunction = window.functionName;
window.functionName = function() {
  // 自定义操作和行为
  originalFunction.apply(this, arguments);
};

1.2. 为对象的属性赋值的方式


Object.defineProperty 通过


2. chrome控制台



3. 函数



3.1. 箭头函数


(单一参数) => {函数声明}
单一参数 => {函数声明}
() => {函数声明} //没有参数


(参数1) => 表达式(单一)
// 相当于:(参数1) =>{ return 表达式; }
//如果函数部分只是一个语句,则可以省略 return 关键字和大括号 {}
// ES5
var x = function(x, y) {
     return x * y;
}
// ES6
const x = (x, y) => x * y;
// const比使用 var 更安全,因为函数表达式始终是一个常量。

3.2. arguments 对象


函数有个内置的对象 arguments 对象,包含了函数调用的参数数组。

函数调用的参数太多(超过声明)时可使用。

x = findMax(1, 123, 500, 115, 44, 88);

function findMax() {
    var i;
    var max = -Infinity;
    for (i = 0; i < arguments.length; i++) {
        if (arguments[i] > max) {
            max = arguments[i];
        }
    }
    return max;
}

定义时,不规定参数类型,不检查传参数量。


4. 对象

对象: 拥有属性方法,的特殊数据类型


4.1. 原型继承

对象都从原型继承属性和方法。
比如: 数组对象继承自 Array.prototype。Person 对象继承自 Person.prototype。

向对象添加属性和方法

function Person(first, last) {
    this.firstName = first;
    this.lastName = last;
}
Person.prototype.nationality = "English";
//添加nationality属性
function Person(first, last) {
    this.firstName = first;
    this.lastName = last;
}
Person.prototype.name = function() {
    return this.firstName + " " + this.lastName;
};
//添加name()方法

4.2. 访问对象内的方法:

name = person.fullName();  //调用函数
name = person.fullName;  
//返回函数定义的字符串
//function() { return this.firstName + " " + this.lastName; }

几乎所有的对象都是 Object 类型的实例,它们都会从 Object.prototype 继承属性和方法。


4.3. 对象构造器函数

function Person(first, last) {
  this.firstName = first;
  this.lastName = last;
}

var x1 = new Person("Bill", "Gates");

函数名,首字母大写
是个函数,不用new,this关键字将指向全局window对象。


4.4. 内建构造器

var x1 = new Object();    // 一个新的 Object 对象
var x2 = new String();    // 一个新的 String 对象
var x3 = new Number();    // 一个新的 Number 对象

4.5. 内建构造器的省略写法

var x1 = {};            // 新对象
var x2 = "";            // 新的原始字符串
var x3 = 0;             // 新的原始数值
var x4 = false;         // 新的原始逻辑值
var x5 = [];            // 新的数组对象
var x6 = /()/           // 新的正则表达式对象
var x7 = function(){};  // 新的函数对象

4.6. JSON对象

浏览器与服务器之间进行交换时,这些数据只能是文本
JSON 属于文本。

对象转换为JSON

var myObj = { name:"Bill Gates",  age:62, city:"Seattle" };
var myJSON =  JSON.stringify(myObj);
window.location = "demo_json.php?x=" + myJSON;

JSON 转换为对象

var myJSON = '{ "name":"Bill Gates",  "age":62, "city":"Seattle" }';
var myObj =  JSON.parse(myJSON);
document.getElementById("demo").innerHTML = myObj.name;

4.7. JSON VS XML

XML是纯文本。
XML需要解析器
JSON 和 XML 都能被 XMLHttpRequest 读取

JSON 实例

{"employees":[
    { "firstName":"Bill", "lastName":"Gates" },
    { "firstName":"Steve", "lastName":"Jobs" },
    { "firstName":"Elon", "lastName":"Musk" }
]}

XML实例

<employees>
    <employee>
         <firstName>Bill</firstName>
         <lastName>Gates</lastName>
     </employee>
     <employee>
         <firstName>Steve</firstName>
         <lastName>Jobs</lastName>
     </employee>
</employees>

事件
冒泡:
捕获:

JS数据类型

  • 值类型:
    字符串String
    数字Number
    布尔Boolean
    空Null
    未定义Undefined
    Symbol:ES6引入,表独一无二的值。

  • 对象类型:
    对象Object
    数组Array
    函数Function
    正则RegExp
    日期Date


标签:function,函数,对象,lastName,JS,JSON,测试,文章,var
From: https://www.cnblogs.com/csnotes/p/18200061

相关文章

  • react中的jsx语法
    JSX是JavaScriptXML的缩写,它是一种JavaScript的语法扩展。JSX允许在JavaScript代码中编写类似于XML或HTML的标记结构,用来描述用户界面的结构。 在React应用中,开发者通常使用JSX来定义组件的结构。这样做的好处是,JSX让代码更加直观易读,并且可以轻松地在JavaS......
  • [20240511]测试问题sql语句对数据库性能影响.txt
    [20240511]测试问题sql语句对数据库性能影响.txt--//五一前遇到的问题,生产系统应用程序升级,但是3个表忘记建立,而编写的程序可能存在问题,导致频繁调用这些根本不可能执行的sql--//语句,正常情况下应该报ORA-00942:tableorviewdoesnotexist,很奇怪的同事反映应用前台根本......
  • 25.interface测试
    #-*-coding:utf-8-*-importjsonimportpytestimportrequestsimportjsonpathfromlog_utilimportloggerclassTestLitemall:defsetup_class(self):#管理端接口url="https://litemall.hogwarts.ceshiren.com/admin/auth/login"us......
  • 微信小程序使用crypto-js进行AES加密
    1.首先npmi crypto-js2.找到node_modules下的crypto-js文件夹3.在crypto-js文件下找到crypto-js.js,将它复制到你存放工具类js的文件夹下,例如我放到了utils文件夹下4.使用var CryptoJS = require('./crypto-js/crypto-js');写一个加密函数并导出exportconst encry......
  • 微信小程序使用JSEncrypt进行RSA加密
    1.首先npm一下JSEncrypt2.找到node_modules下的jsencrypt文件夹3.在jsencrypt文件下找到jsencrypt.min.js,将它复制到你存放工具类js的文件夹下,例如我放到了utils文件夹下4.使用var JSEncrypt = require('./jsencrypt/jsencrypt.min.js');写一个加密函数并导出exportcon......
  • Camera测试指导学习
    camera的整机老化测试中,有时候客户会要求测试每次开机后首次打开相机是否正常。手动打开相机会严重影响测试效率,所以编写次脚本用于测试。相机的基本操作:入口,模式切换,前后摄像头切换;相机的模式:一级模式,夜景,人像,录像;设置菜单功能:拍照设置,视频设置,通用设置;外设场景:蓝牙耳机,有线......
  • app测试工具monkey
    python是一种广泛使用的解释型,高级和通用的编程语言。支持多种编程范型,包括函数式,指令是,结构化,面向对象和反射式编程,它拥有动态类型系统和垃圾回收功能,能够自动管理内存使用,并且其本事拥有一个巨大而广泛的标准库。Monkey是Android中的一个命令行工具,可以运行在模拟器或者实际设......
  • Django测试与持续集成:从入门到精通
    title:Django测试与持续集成:从入门到精通date:2024/5/1816:38:41updated:2024/5/1816:38:41categories:后端开发tags:Django测试CI/CD优化部署监控迭代第1章:Django测试基础1.1Django测试框架概述Django测试框架是Djangoweb框架的一部分,提供了一个强......
  • Angular-测试驱动开发-全-
    Angular测试驱动开发(全)原文:zh.annas-archive.org/md5/60F96C36D64CD0F22F8885CC69A834D2译者:飞龙协议:CCBY-NC-SA4.0前言本书将为读者提供一个关于JavaScript测试驱动开发(TDD)的完整指南,然后深入探讨Angular的方法。它将提供清晰的、逐步的示例,不断强调TDD的最佳实......
  • jsoncpp按写入顺序读取
    jsoncpp按写入顺序读取在不修改jsoncpp源码的基础上,按照写入顺序读取,编写JsonValue类派生自Json::Value。jsonvalue.h#ifndefJSONVALUE_H#defineJSONVALUE_H#include<jsoncpp/json/json.h>classJsonValue:publicJson::Value{public:staticinlineJson::Val......