target属性相关知识
-
jquery 的target属性显示哪个 DOM 元素触发了事件:$("p, button, h1, h2").click(function(event){ $("div").html("Triggered by a " + event.target.nodeName + " element.");});target 属性规定哪个 DOM 元素触发了该事件。<html><head><script type="text/javascript" src="/jquery/jquery.js"></script><script type="text/javascript">$(document).ready(funct
-
form的target属性作用域的问题当设置form的target属性为iframe的name时,浏览器查找iframe的范围并不只是form所在body中的iframe,而是_top页面及子孙页面中全部iframe。测试如下:图片.pnga2为iframe a1中的iframe页面,在a2页面中提交form,form的target设置为b2,b2为iframe b1中的iframe,点击提交按钮,可以看到b2跳转成功,如下图:图片.pngindex.html<html> <body> index page <iframe name="a1" src="a1.html" width="100%" height="200"></iframe>
-
原生JS常用API整理Anchor 对象:指HTML超链接 1.修改一个链接的文本,链接和target //html部分 <a id="myAnchor" href="访问" target="_blank" rel="nofollow">http://www.microsoft.com">访问 Microsoft</a> <input type="button" ="changeLink()" value="改变链接"> <p>改变超链接的文本和 URL。也改变 target 属性。target 属性的默认设置是 "_self",这意味着会在相同的窗口中打开链接。通过把 target 属性设置为 "_blank",链接将在新窗口中打开。</p> //js部分 function changeLin
-
对pandas进行数据预处理的实例讲解引入包和加载数据import pandas as pd import numpy as np train_df =pd.read_csv('../datas/train.csv') # train set test_df = pd.read_csv('../datas/test.csv') # test set combine = [train_df, test_df]清洗数据查看数据维度以及类型缺失值处理查看object数据统计信息数值属性离散化计算特征与target属性之间关系查看数据维度以及类型#查看前五条数据 print train_df.head(5) #查看每列数据类型以及nan情况 print train_df.info() # 获
target属性相关课程
-
结合编程学数学 专为程序员设计的线性代数 bobo老师专为程序员设计的线性代数课程,全新的课程设计模式,配合编程讲解,拒绝枯燥的例题讲解,而是讲清楚每一个知识点的来龙去脉,完整学习线性代数领域的知识体系,这一次,让你学会线性代数!
讲师:liuyubobobo 初级 2835人正在学习
target属性相关教程
- 2.1 target 属性 由于链接是 HTML 中重要的交互介质,当用户点击一个链接跳转的目标界面并非是当前的界面,这时候就需要一个重要的属性 target 来定义所要跳转的目标界面。target 属性的可选值有以下几个:_blank: 在新窗口打开链接;_self : 默认方式,在当前窗口载入链接内容;_top: 在包含当前文档的最顶层的窗口载入链接内容。(一般用在有 frame 框架标签的页面中。)_parent: 在当前文档的父窗口载入链接内容。(一般用在有 frame 框架标签的页面中。)其中_top 和 _parent 不太好理解,看下面一个例子:949以上代码实现:点击链接(搜一搜)后,在当前页面的 iframe 中嵌入搜索框页面。Tips: 该功能在 IE10 版本以下不兼容。其中顶层窗口和父窗口针对在网页中嵌套 iframe 或者 frameset 有效,当嵌套框架时被嵌套框架是嵌套框架的 _parent,最外层的 HTML 称为 _top。新的 HTML 标准中关于 target 属性的存在有一定的争议,主要是因为可以使用 JavaScript 的方式替代 target,例如:951以上代码使用 JavaScript 函数的方式实现各种打开链接的方式。
- 1.7 target 属性 这个属性用户设置表单提交之后浏览器的跳转地址,默认是在当前页面打开新地址,可选值有:_blank 新窗口;_self 默认,当前窗口;_parent 父窗口;_top 最顶层窗口;_framename 指定的框架例如:1015上述代码会在提交完数据之后,在一个新的浏览器界面中打开百度的首页。
- 2.3 Reflect.construct(target, args) Reflect.construct() 和 new 操作符构造函数相似 ,相当于运行 new target(...args) ,提供了一种新的不使用 new 来调用构造函数的方法。语法:Reflect.construct(target, argumentsList[, newTarget])参数:target:被运行的目标构造函数;argumentsList:类数组,目标构造函数调用时的参数;newTarget:(可选)作为新创建对象的原型对象的 constructor 属性,默认值为 target 。下面的两种实例化的方式是一样的。function Foo() { console.log(arguments);}var obj = new Foo(...args);var obj = Reflect.construct(Foo, args); Reflect.construct() 返回值是以 target 函数为构造函数,如果 newTarget 存在,则为 newTarget 。argumentList 为其初始化参数。对于有没有传递第三个参数,我们可以这样理解:target 就是唯一的构造函数,但是如果传递了第三个参数,那就表示:我们的实例由两部分组成,实例上绑定在 this 上的属性部分由第一个参数的构造函数生成;不是实例上的属性部分则由第三个参数的构造函数生成。下面我们来看下具体的实例:class A { constructor(name) { console.log('init A class'); this.name = name || 'Jack'; } getName() { console.log(this.name); return this.name; }}class B { constructor(age) { console.log('init A class'); this.age = age || 18; } getAge() { console.log(this.age); return this.age; }}// 使用A类作为构造函数let a = Reflect.construct(A, ['David']);// 使用B类作为构造函数let b = Reflect.construct(A, ['David'], B);console.log(a);console.log(b);a.getName();b.getAge();下图是上面代码的打印结果,创建实例 a 时没有第三个参数,它的原型上的 constructor 指向的是类 A,并且有 getName 方法。创建实例 b 时有第三个参数,打印的结果可以看到实例 b 原型上的 constructor 执行的是类 B,并且有 B 上的 getAge 方法。
- 5.1 @Target 元注解 介绍Target 顾名思义就是目标对象,也就是这个标签作用于哪些代码中目标对象,可以同时指定多个作用的目标对象。源码定义@Target(AnnotationTarget.ANNOTATION_CLASS)//可以给标签自己贴标签@MustBeDocumented//注解类构造器参数是个vararg不定参数修饰符,所以可以同时指定多个作用的目标对象public annotation class Target(vararg val allowedTargets: AnnotationTarget)@Target 元注解作用的目标对象在@Target注解中可以同时指定一个或多个目标对象,那么到底有哪些目标对象呢?这就引出另外一个AnnotationTarget 枚举类:public enum class AnnotationTarget { CLASS, //表示作用对象有类、接口、object对象表达式、注解类 ANNOTATION_CLASS,//表示作用对象只有注解类 TYPE_PARAMETER,//表示作用对象是泛型类型参数(暂时还不支持) PROPERTY,//表示作用对象是属性 FIELD,//表示作用对象是字段,包括属性的幕后字段 LOCAL_VARIABLE,//表示作用对象是局部变量 VALUE_PARAMETER,//表示作用对象是函数或构造函数的参数 CONSTRUCTOR,//表示作用对象是构造函数,主构造函数或次构造函数 FUNCTION,//表示作用对象是函数,不包括构造函数 PROPERTY_GETTER,//表示作用对象是属性的getter函数 PROPERTY_SETTER,//表示作用对象是属性的setter函数 TYPE,//表示作用对象是一个类型,比如类、接口、枚举 EXPRESSION,//表示作用对象是一个表达式 FILE,//表示作用对象是一个File @SinceKotlin("1.1") TYPEALIAS//表示作用对象是一个类型别名}
- 2.2 属性和 effect 关联 怎么才能让属性和这个函数进行关联呢?首先我们要创建一个收集函数(track)用于收集属性 key 和 effect 回调函数的关联,并且只有在 effect 中使用到的 key,更新时才会执行 effect 中的回调,所以我们在收集依赖时需要先判断。function track(target, key) { if (activeEffect === viod 0) { return; }}什么时候进行收集呢?effect 回调函数会默认执行,在获取值的时候对响应式对象上的 key 进行依赖收集,也就是在 createGetter 函数中进行收集。function createGetter() { return function get(target, key, receiver) { const res = Reflect.get(target, key, receiver); if (isSymbol(key)) { return res; } // 依赖收集 track(target, key); if (isObject(res)) { return reactive(res); } return res; };}如何关联呢?就是需要在 target 上的 key 中存放若干个 effect,那这要怎么存放呢?这时我们想到了 WeakMap,创建一个 WeakMap 来保持 target 上的需要关联 effect 的属性。同时,下面的伪代码数据结构是我们希望存放在 WeakMap 中的映射,其中 target 是目标对象。{ target1: { key: [effect, effect] }, target2: { key: [effect, effect] }}在存放 effect 时可能还需要给 effect 加上一些标识,如:id、deps、options 等,后面会用到。Let uid = 0;function createReactiveEffect(fn, options) { const effect = function reactiveEffect() { activeEffect = effect; return fn(); } effect.id = uid++; effect.deps = []; effect.options = opntions; return effect} const targetMap = new WeakMap();function track(target, key) { if (activeEffect === undefined) { return; } // 目标是创建一个映射:{target1: {name: [effect, effect]},target2: {name: [effect, effect]}} let depsMap = targetMap.get(target); // depsMap存放target的值,是一个Map对象 if(!depsMap) { // 如果targetMap中没用target对象,则创建一个。 targetMap.set(target, (depsMap = new Map())); } let dep = depsMap.get(key); // 获取depsMap对象中属性是target上的key值 if(!dep) { depsMap.set(key, (dep = new Set())); // 存放effect的集合 } if(!dep.has(effect)) { dep.add(activeEffect); activeEffect.deps.push(dep); }}上面的代码中,收集目标对象上所有的依赖,在 effect 的回调函数中没有使用到的属性,就不需要进行依赖收集。在执行完创建响应式 effec 函数 createReactiveEffect 后需要把 activeEffect 置为 null。function createReactiveEffect(fn, options) { const effect = function reactiveEffect() { try { activeEffect = effect; return fn(); } finally { activeEffect = null; } } return effect} 上面的代码中 finally 是一定会执行的。在 effect 回调函数中嵌套使用 effect,并且在嵌套的 effect 后还有响应式数据,如果是下面这种写法,state.c = 300 将不会收集。effect(() => { state.a = 100; effect(() => { state.b = 200; }) state.c = 300;})这个时候我们就需要创建一个存放栈的数组(effectStack)来存放 activeEffect,执行完毕后也不用赋值 null 了,通过出栈的形式把最后一个移除,让当前的 activeEffect 值等于 effectStack 最后一个值 effectStack[effectStack.length-1] 。这样我们在执行完创建响应式 effect 函数时,控制权又会交到上一层的 activeEffect 上,这样上面代码中的 state.c=300 就会被收集到第一层的 effect 中去。具体执行代码如下:const effectStack = [];function createReactiveEffect(fn, options) { const effect = function reactiveEffect() { try { activeEffect = effect; effectStack.push(activeEffect); return fn(); } finally { effectStack.pop(); activeEffect = effectStack[effectStack.length - 1]; } } return effect}使用栈的还有一个好处可以防止递归执行,在 effect 如果有数据持续变化是如: state.a++ 这样的逻辑就会形成递归。这时需要处理为只执行一次,增加一个条件判断,如下代码:function createReactiveEffect(fn, options) { const effect = function reactiveEffect() { if (!effectStack.includes(effect)) { // 防止死循环 try { activeEffect = effect; effectStack.push(activeEffect); return fn(); } finally { effectStack.pop(); activeEffect = effectStack[effectStack.length - 1]; } } } return effect}
- 4. 作用于类属性的装饰器 作用于类属性的装饰器表达式会在运行时当作函数被调用,传入下列3个参数 target、name、descriptor:target: 对于静态成员来说是类的构造函数,对于实例成员是类的原型对象name: 成员的名字descriptor: 成员的属性描述符如果你熟悉 Object.defineProperty,你会立刻发现这正是 Object.defineProperty 的三个参数。比如通过修饰器完成一个属性只读功能,其实就是修改数据描述符中的 writable 的值 :function readonly(value: boolean) { return function (target: any, name: string, descriptor: PropertyDescriptor) { descriptor.writable = value }}class Employee { @readonly(false) salary() { console.log('这是个秘密') }}const e = new Employee()e.salary = () => { // Error,不可写 console.log('change')}e.salary()解释: 因为 readonly 装饰器将数据描述符中的 writable 改为不可写,所以倒数第三行报错。
target属性相关搜索
-
tab
table
tableau
tablelayout
table样式
taif
tail
talk
tamcat
tan
target属性
task
tbody
tcl tk
TCP IP
tcp ip协议
tcpdump
tcpip
tcpip协议
tcp连接